var reg = /^\d{1}\w{3,10}$/g;
reg.test('12345')
//true
reg.test('123_45')
//false 为啥是 false
reg.test('12_3_45')
//true //这为啥又 true 了
reg.test('12_345')
//false 为啥是 false
var reg = /^\d{1}\w{3,10}$/g;
reg.test('12345')
//true
reg.test('123_45')
//false 为啥是 false
reg.test('12_3_45')
//true //这为啥又 true 了
reg.test('12_345')
//false 为啥是 false
JS权威指南第6版书上原话,我给你念一念:
如果让一个带有修饰符g的正则表达式对多个字符串执行exec()或test(),要么在每个字符串中找出所有的匹配以 便将lastIndex自动重置为零,要么显示将lastIndex手动设置为0(当最后一次检索失败时需要手动设置lastIndex)。
说来也巧,我刚看完这个没太理解,你这问题一问,这段话读明白了...
这是没有加g的,没问题
这是加了g的,可以看出来并不是每次执行为了lastIndex都是0,也就是问题所在了
天天有人问这个问题
把最后的g去掉