var msg=/[a-z]+/g
undefined
msg.test('dfdfdf')
true
msg.test('dfdfdf')
false
msg.test('dfdfdf')
true
问什么一时返回真一时返回假呢
var msg=/[a-z]+/g
undefined
msg.test('dfdfdf')
true
msg.test('dfdfdf')
false
msg.test('dfdfdf')
true
问什么一时返回真一时返回假呢
10 回答11.7k 阅读
2 回答3.2k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
3 回答843 阅读✓ 已解决
3 回答1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
因为题主多次测试都是使用同一个字符串字面量
'dfdfdf'
,而在
JavaScript
中, 正则表达式的g
标志有记录lastIndex
的功能1,所以第一次test记录了
lastIndex
为'dfdfdf'
字符串的末尾, 导致第二次test的结果为false
,并且第二次test由于遍历了
'dfdfdf'
字符串的末尾(也就是完整地遍历了整个字符串对象里面的内容),所以
lastIndex
指针又重新指向了字符串开头, 然后重新循环.所以问题中的测试会是以
true
,false
,true
,false
的结果交替出现, 如下所示: