代码如下:1
2
3var reg = /^1[345678][0-9]{9}$/g;
console.log(reg.test(15328044636)); // => true
console.log(reg.test(15328044636)); // => false
问题原因
这是因为正则 reg
的 g 属性,设置的全局匹配。RegExp
有一个 lastIndex
属性,来保存索引开始位置。上面的问题,第一次调用的 lastIndex
值为0,到了第二次调用,值变成了11。如果正则匹配失败,lastIndex
会被重置为 0。