正则表达式有无g参数时,test()结果的差异
2011-06-20 16:50
218 查看
有g参数的正则表达式:
var kk=/\w\w/g;
var kk=new RegExp("\\w\\w","g");
如果正则表达式有指定g参数全局匹配 , 则每次test()是依次获得下一个匹配。举例说明
var s="AABBCC";
var kk=/(\w\w)/g;
for(i=0;i<8;i++){
document.write ("<br>"+kk.test(s));
}
上面的代码结果是3个true,1个false,再3个true,再1个false。
true
true
true
false
┄
第1次test匹配AA,第2次test匹配BB,第3次test匹配CC,第4次test找不到匹配,之后又从头重新开始:
第5次同第1次,第6次同第2次,┄┄。
所以会出现test有时候true,有时候false的情况。这里的正则表达式必须是指定了g参数的。
利用这一特点,可以用while循环遍历所有正则匹配:
var s="AA_123_BB_456_CC";
var kk=/((\w)\2)/g;
while(kk.test(s)){
document.write ("<br>"+RegExp.$1);
}
得到结果:
AA
BB
CC
如果正则表达式没有g参数,则每次test都是从头开始匹配,不存在上述问题。
没有g参数的正则表达式:
var kk=/\w\w/;
var kk=new RegExp(\\w\\w);测试:
var s="AABBCC";
var kk=/(\w\w)/;
for(i=0;i<8;i++){
document.write ("<br>"+kk.test(s));
}
上面的代码结果是8个true,每次都是AA匹配。
true
true
true
true
┄
本文转自:无心的专栏
var kk=/\w\w/g;
var kk=new RegExp("\\w\\w","g");
如果正则表达式有指定g参数全局匹配 , 则每次test()是依次获得下一个匹配。举例说明
var s="AABBCC";
var kk=/(\w\w)/g;
for(i=0;i<8;i++){
document.write ("<br>"+kk.test(s));
}
上面的代码结果是3个true,1个false,再3个true,再1个false。
true
true
true
false
┄
第1次test匹配AA,第2次test匹配BB,第3次test匹配CC,第4次test找不到匹配,之后又从头重新开始:
第5次同第1次,第6次同第2次,┄┄。
所以会出现test有时候true,有时候false的情况。这里的正则表达式必须是指定了g参数的。
利用这一特点,可以用while循环遍历所有正则匹配:
var s="AA_123_BB_456_CC";
var kk=/((\w)\2)/g;
while(kk.test(s)){
document.write ("<br>"+RegExp.$1);
}
得到结果:
AA
BB
CC
如果正则表达式没有g参数,则每次test都是从头开始匹配,不存在上述问题。
没有g参数的正则表达式:
var kk=/\w\w/;
var kk=new RegExp(\\w\\w);测试:
var s="AABBCC";
var kk=/(\w\w)/;
for(i=0;i<8;i++){
document.write ("<br>"+kk.test(s));
}
上面的代码结果是8个true,每次都是AA匹配。
true
true
true
true
┄
本文转自:无心的专栏
相关文章推荐
- 正则表达式有无g参数(全局搜索)时,test()结果的差异
- 为一个正则表达式在输出和不输出情况下结果的差异感到十分疑惑!!!
- 正则表达式在各种工具中的差异
- vim 正则表达式 %s/\n/\n/g 结果不一样了
- 正则表达式获取地址栏参数
- Linux shell 正则表达式(BREs,EREs,PREs)差异比较
- java 正则表达式截取带参数的多个url
- 正则表达式中参数g和m的使用
- javascript正则(带g符号) 多次调用test 结果交替出现
- Java正则表达式获取匹配结果
- 正则表达式获取url中的参数。
- linux shell正则表达式差异比较
- javascript正则表达式的test奇怪问题
- Jmeter-使用正则表达式提取器获取关联参数
- 注意:JavaScript的正则表达式跟.net的正则表达式有些差异。
- 关于正则表达式 g,m 参数的总结,为了回答“正则表达式(/[^0-9]/g,'')中的"/g"是什么意思?”
- JS中的正则表达式小小的技巧---Test方法的使用
- js 正则表达式之test函数讲解
- C#正则表达式匹配被双引号包起来的中文并返回匹配的结果