JavaScript正则表达式贪婪模式与惰性模式

来源:互联网 发布:水暖工程预算表软件 编辑:程序博客网 时间:2024/06/05 23:03

JavaScript正则表达式贪婪模式与惰性模式

元字符/元符号匹配规则例子结果?匹配出现0次或1次 /a?/.test('abcd');true+匹配出现1次或多次/a+/.test('aaaaaaaa');true*匹配出现0次或1次或多次/a*/.test('bbbbb');true{n}匹配刚好出现n次/a{5}/.test('aaaab');false{n,m}匹配最少出现n次最多出现m次/a{1,3}/.test('aaabbb');true{n,}匹配最少出现n次/a{3,}/.test('aabbb');false

贪婪模式:匹配尽可能多的字符

贪婪量词 ?+*{n}{n,m}{n,}
首先比对整个字符串是否匹配,如果匹配不成功则去掉字符串最后一个字符再继续进行匹配,以此类推直到匹配成功或不剩字符才停止。var str = '0a123ba123ba123';var pattern = /a[a-b0-9]*b/;pattern.test(str);//工作过程如下:pattern.test('0a123ba123ba123'); //false  首先比对整个字符串,如果不匹配,删除最后一个字符3继续匹配pattern.test('0a123ba123ba12');  //false  如果不匹配,删除最后一个字符2再继续匹配...pattern.test('0a123ba123b');     //true   匹配成功,停止工作

惰性模式:匹配尽可能少的字符

惰性量词 ??+?*?{n}?{n,m}?{n,}?
首先从字符串第一个字符开始匹配,如果匹配成功则停止匹配,否则加入第二个字符继续匹配,依此类推直到匹配成功或不剩字符才停止。var str = '0a123ba123ba123';var pattern = /a[a-b0-9]*?b/;pattern.test(str);//工作过程如下:pattern.test('0'); //false  首先比对第一个字符,如果不匹配,加入第二个字符a继续匹配pattern.test('0a');  //false  如果不匹配,加入第三个字符1再继续匹配...pattern.test('0a123b');     //true   匹配成功,停止工作

模式比对:

模式表达式例子结果贪婪/a[a-b0-9]*b/ '0a123ba123b'.match(/a[a-b0-9]*b/);["a123ba123b"]惰性/a[a-b0-9]*?b/ '0a123ba123b'.match(/a[a-b0-9]*?b/);["a123b"]
2 0