JavaScript 正则表达式
1.JavaScript 正则
1)JavaScript RegExp对象,是对字符串进行模式匹配的强大工具。
2)运用:在输入处验证输入的字符串是否合法,指定用户输入字符串的格式。
2.定义方法
1)字面量语法: var reg = / pattern / attributes (一般推荐这种写法)
2)创建RegExp对象法: var reg = new RegExp( "pattern" , "attributes" )
3)pattern:可以是字符串,也可以是正则表达式对象,使用创建对象法,pattern是正则表达式对象,可以不写第二个参数
4)attributes:匹配方式。它只有三个参数:i,g,m
g:查找所有匹配,而非查找到第一个就停止
i:表示不区分大小写
//表示匹配所有的a和A
写法1: var reg = /a/ig
写法2: var reg = new RegExp("a","ig")
m:多行匹配
3.定义规则
1)方括号[ ]:表示匹配括号中的所有字符,单个字符匹配
var reg = /[a-z]/ //表示满足小写a-z的字符
var reg = /[a-z][A-Z]/ //表示满足条件并且要相邻的字符串
2)花括号{ }:表示匹配多少个字符,通常与方括号[ ]一起使用
var reg = /[a-z]{3}/ //表示连续的三个小写字符的字符串
var reg = /[a-z]{1,3}/ //{1,3}表示区间,表示大于等于1,小于等于3
3)小括号( ):表示提取字符串,匹配到的字符串可以通过$0-9可获取匹配的字符串
4)^符号:
①表示匹配一个字符串的开头
var reg = /^[a-z]/ //表示以小写字母开头的字符串
②如果^符号出现在[]中的第一个字符位置,表示不包含此字符串
var reg = /[^a]/ //表示字符串中不能有a
5)$符号:表示匹配一个字符串的结尾
var reg = /d$/ //表示以d结尾的字符串
6)转义字符\
.:查找单个字符,除了换行和行结束符
\w:查找单词字符 === [a-zA-Z0-9]
\W:查找非单词字符 === [^a-zA-Z0-9]
\d:查找数字 === [0-9]
\D:查找非数字 === [^0-9]
\s:查找空白字符 === 空格、TAB、换页符
\S:查找非空白字符
\b:匹配单词边界
\B:匹配非单词边界
\0:查找NUL字符
\f:查找换页符
\n:查找换行符
\r:查找回车符
\t:查找制表符
\v:查找垂直制表符
\xxx:查找以八进制数xxx规定的字符
\xdd:查找以十六进制数dd规定的字符
\uxxxx:查找以十六进制数xxxx规定的Unicode字符
7)量词
n+:+号表示匹配任何包含至少一个n的字符串
n*:匹配任何包含零个或多个n的字符串
n?:匹配任何包含零个或一个n的字符串
n{X}:匹配包含X个n的序列的字符串
n{X,Y}:匹配包含X或Y个n的序列的字符串
n{X,}:匹配包含至少X个n的序列的字符串
?=n:匹配任何其后紧接指定字符串n的字符串
?!n:匹配任何其后没有紧接指定字符串n的字符串
4.正则表达式的方法
1)test():在字符串中查找符合正则(reg)的内容,若查找得到返回true,否则false
格式:reg.test(字符串)
let emailPattern=/^([a-zA-Z0-9_\-\.])+\@([a-zA-Z0-9_\-\.])+\.([a-zA-Z]{2-4})$/
emailPattern.test("simon@126.com") //返回true
2)search():在字符串中查找符合正则(reg)的第一次出现的位置,若查找到返回第一次出现的位置,否则返回-1
格式:字符串.search(reg)
let str = "simon@126.com"
str.search(/@/) //返回 5
3)match():获取正则(reg)匹配的结果,以数组的形式返回
格式:字符串.match(reg)


注意:不是全局匹配则只返回第一个,没有匹配到则返回null
4)exec():捕获符合正则(reg)的字符串,若捕获到符合正则的字符串则返回一个Array实例
格式:reg.exec(字符串)

5)replace():用于在字符串中用一些字符替换另一些字符,或替换一个与正则(reg)匹配的子串
格式:字符串.replace( reg | 字符串,字符串 | 回调函数 )
(1)字符串.replace(字符串,字符串 | 回调函数) //回调函数必须返回的式一个字符串
"abcde12345abc".replace("abc","mmm"); // return:mmmde12345abc
(2)字符串.replace(reg,字符串)
"abcde12345abc".replace(/abc/g,"mmm") // return:mmmde12345mmm
(3)字符串.replace(reg,回调函数)
每匹配到一个正则,就调用一次回调函数,每次回调都会传递以下参数:
result:本次匹配到的结果
$1-$9:正则中有多少个()就表示有多少个参数
offset:记录本次匹配的开始位置
source:接受匹配的原始字符串

浙公网安备 33010602011771号