参考粘性匹配
在日常业务开发中正则匹配相对来说使用很少,即使是使用也只是简单的直接字面量去使用, 但是有些场景下使用可能需要保存这个正则规则,这样可能在不了解粘性匹配的情况下使用了这个特性,使得正则匹配的结果与我们希望的效果存在出入
简单总结一下正则标记中使用了 g以及y 之后会存在粘性匹配会记录本次匹配结束的索引位置作为下次匹配的起点,当匹配不到内容时会归0记录的索引,前提是反复使用了这个正则对象
let A = /a|b|c|d|e|f/g
let B = /a/g
console.log(A.test('abcdef')) // => true
console.log(B.test('abcdef')) // => true
console.log(/a/g.test('abcdef')) // => true
console.log(A.lastIndex,B.lastIndex) // 1 1
console.log(A.test('abcdef')) // => true
console.log(B.test('abcdef')) // => false
console.log(/a/g.test('abcdef')) // => true
console.log(A.lastIndex,B.lastIndex) // 2 0