诡异的正则表达式问题

图片描述

如上图,在chrome的console面板测试正则表达式,同样的字符串匹配,为什么有时候是true, 有时候是false?

阅读 2.2k
3 个回答

因为这里 你使用正则的test方法 要考虑 这个正则对象同时也拥有lastIndex属性

使用test方法时第一次的时候总是为0的,第一次查找完了的时候会把lastIndex的值设为匹配到得字符串的最后一个字符的索引位置加1,第二次查找的时候会从lastIndex这个位置开始,后面的以此类推。如果没有找到,则会把lastIndex重置为0
所以这里会出现true和false交替。

最后要注意的是 lastIndex 只在全局查找模式下起效, 你将g去掉 就不会出现这种情况了

g标识去掉,test()的时候不要用g标识,这个跟正则对象的lastIndex属性有关

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进