var reg = /^[a-z][a-z0-9_]*$/g;
console.log(reg.test('sadf6'))
console.log(reg.test('sadf6'))
打印结果一次是true,一次是false
这是因为正则reg的g属性,设置的全局匹配。RegExp有一个lastIndex属性,来保存索引开始位置,也就是说第二次正则会在索引为5的地方验证,那么这个时候验证肯定是不对的。那么怎么办呢?
第一:去掉后边的g,关闭全局匹配;
var reg = /^[a-z][a-z0-9_]*$/;
第二:就是每次console.log之前把reg.lastIndex重置为0;
console.log(reg.test('sadf6'))
reg.lastIndex = 0;
console.log(reg.test('sadf6'))