正则表达式的作用
正则表达式是一个字符串,一个用来对字符串进行处理的字符串
字符串的处理:匹配 .match();
提取 .match();
替换 .replace();
切割 .split();
正则表达式的组成
正则表达式的组成:字符、数量、边界词、修饰词、分组
-
字符:
a b c 任何一个字符都可以作为正则表达式的字符
[abc] 表示一个字符,a 或者 b 或者 c
[a-z] 表示 a-z 之间所有的小写字母
[A-Z] 表示 A-Z 之间所有的大写字母
[ ^abc] 表示除a b c 以外所有的字符
[0-9] 表示0-9所有的阿拉伯数字
[a-zA-Z_0-9] 表示单词字符(小写的a-z,大写的A-Z,下划线,0-9)预定义字符:
. 表示所有字符
/d 表示所有的数字
/D 表示非数字字符
/w 表示单词字符
/W 表示非单词字符
/s 表示空白字符
/S 表示非空白字符 -
数量词
数量词用在字符后面,用来定义这个字符的个数
[a]{n} 表示字符a出现n次
[a]{n,} 表示字符a至少出现n次
[a]{n,m} 表示字符a至少出现n次,最多出现m次
[a]? 表示字符a出现0次或者1次
[a]* 表示字符a出现0次或者多次
[a}+ 表示字符a出现1次或者多次
例子:[a]{5} 表示字符a出现5次
a[a-z]{3}b 表示a b 之间有三个a-z的小写字符
懒惰性数量词:数量词 ?
例子:{3,}? 数量至少是3次以上,但尽可能的少
?? 数量是0次或者1次,但尽可能的少
贪婪性数量词:JavaScript中默认为贪婪性数量词
-
边界词
/b 单词边界(正则表达式开头和结尾都写上/b),只对半角字符起作用
^ 表示行开头
$ 表示行结尾 -
修饰词
g 表示全局匹配,默认情况下正则表达式只匹配一次(匹配第一个),全局匹配将所有符合要求的内容全部匹配出来
i 表示忽略大小写
语法格式: /正则表达式/gi; 表示全局匹配且忽略大小写 -
分组及分组捕获
使用 () 对正则表达式进行分组,整个正则表达式默认为一个分组
每个分组都有一个下标,下标是从0开始的连续的整数
例子:(a(b(cd))) 下标是 0
b(cd) 下标是 1
cd 下标是2
由于一般情况下,整个分组的下标是不用写括号的,所以我们一般看到的括号的分组是从第第二组开始的(下标是1)
使用分组的下标可以捕获相应的分组
捕获方式: /下标
例如:
/a(.) /1*c/ 其中(.)为第二组下标为1,/1表示捕获(.)且将其重复表示一次, 整个表达式的含义为:a c 之间一个任意字符 和 这个任意字符重复出现0次或多次。
- 断言
语法格式:(?<=断言的内容)正则表达式
例子:
/(?<=tel:)/d{11}/ 表示左边是以tel:开头的11位数字
//d{11}(?=tel:)/ 表示右边是以tel:结尾的11位数字
/(?<!tel:)/d{11}/ 表示左边不是以tel:开头的11位数字
//d{11}(?!tel:)/ 表示右边不是以tel:结尾的11位数字