简单记录下js正则表达式基础东西,后续会补充完善
实例创建和字面量形式创建区别
- 字面量创建方式不能进行字符串拼接,实例创建方式可以(这种适合接收函数参数用实例创建):
var char = 'abc';
var reg1 = /char/;
var reg2 = new RegExp(char+'d','g');
console.log(reg1) // /char/
console.log(reg2) // /abcd/g
- 字面量创建方式特殊含义的字符不需要转义,实例创建方式需要转义:
var reg1 = new RegExp('\d'); // /d/
var reg2 = new RegExp('\\d') // /\d/
var reg3 = /\d/; // /\d/
特殊含义的元字符:
\d : 0-9数字一个,占一个位置
\w:数字,字母,下划线 0-9 a-z A-Z _ 一个
\s :空格或者空白
\D : 除了\d
\W:除了\w
\S : 除了\s
. :任意字符
** : 转义字符 转义特殊字符
| :表示或者
() : 分组 优先级高
\n : 匹配换行符
\b : 匹配边界
^ :限定开始位置
$ : 限定结束位置
[a-z] : []表示范围,匹配[]内任意一个字符
[^a-z] :^在[]内表示除了 这里表示除了小写a-z字母
[abc] : 表示abc三个字母中的一个
代表次数的量词:
星号(*) : 任意个字符(0到多个) 数量
加号(+) :至少一个字符(1到多个)数量
?:0个或者1个 数量
{n}:正好n个字符(定死了n个) 数量
{n,m}:n-m个字符 数量
{n,}:n到多次个字符 数量
“\1”:重复正则中第一个圆括号匹配的内容 一般配合()使用
“\2”:重复正则中第二个圆括号匹配的内容 一般配合()使用 以上多用于匹配重复内容。
修饰符:
i:忽略大小写
g:执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)
m:执行多行匹配
方法:
/ /.test(str):验证字符串是否符合正则 符合返回true 否则返回false。
str.replace(/ /,” “):正则去匹配字符串,匹配成功的字符去替换成新的字符串。
str.match(/ /,” “):正则去匹配字符串,匹配成功的字符去替换成新的字符串。若无全局匹配g,则返回第一个匹配到的内容如:[“匹配内容”,index:num,input:”xxxxxxxxxxx”],若有全局匹配g,则返回匹配成功的数组[“匹配内容1”,”匹配内容2”,”匹配内容3”]
/ /.exec(str): 捕获符合规则的字符串。每次调用exec方法时,捕获到的字符串都不相同
lastIndex :这个属性记录的就是下一次捕获从哪个索引开始。
当未开始捕获时,这个值为0。
如果当前次捕获结果为null。那么lastIndex的值会被修改为0.下次从头开始捕获。