[RegExp]正则表达式中global方式的特性
[RegExp]正则表达式中global模式的特性
一直不是很清楚javascript的global到底表现在哪些方面,所以今天特地做了几个测试:
var str = 'bbaaabb', reg = /^b|b$/; while(reg.test(str)){ str = str.replace(reg,''); console.log(reg.lastIndex + ":" + str); }
最终结果:
//0:baaabb //0:aaabb //0:aaab //0:aaa
但是如果稍做一些修改
var str = 'bbaaabb', reg = /^b|b$/g; while(reg.test(str)){ str = str.replace(reg,''); console.log(reg.lastIndex + ":" + str); }
最终结果则是:
//0:baaab //0:aaa
这样的结果说明,global模式下,在匹配到了开始的b字符后,还将继续匹配结尾的b字符,从而忽视掉中间"|"操作符。