先看下面这个例子:
var re = /cat/g
for (var i = 0; i < 10; i++) {
console.log(re.test('catfgfdjkgh'))
}
我们会发现得到的结果是true false true false……,可能和我们预想的不一样。这是因为第一次调用test()找到了‘cat’,但第二次调用是从索引为3的字符(上一次匹配的末尾)开始的,所以匹配不到了,由于会检测到字符串末尾,所以下一次再调用test()就又从头开始了。
var re = null
for (var i = 0; i < 10; i++) {
re = /cat/g
console.log(re.test('catfgfdjkgh'))
}
这次结果就是 true…… 啦,循环匹配时,记得将实例属性重置才能得到我们想要的结果。