我可以知道为什么以下陈述会发生以下奇怪的行为吗?
a = /\d+/gi
outputs `/\d+/gi`
a.exec('test1323')
outputs `["1323"]`
并再次运行相同的语句给出 a.exec(' test1323&#39)
空
即使我尝试使用新的正则表达式创建正则表达式("正则表达式字符串"),但仍然没有变化。
请参阅附件
它发生在chrome控制台中。
答案 0 :(得分:1)
您正在使用g
标志创建正则表达式。执行此操作时,exec
方法会记住上次匹配的位置,并从最后一次匹配开始匹配。结果解释如下:
> a = /\d+/gi
< /\d+/gi // a.lastIndex is initialized to 0
> a.exec("test1323")
< ["1323"] // match begins at 0, match found at index 4...7, a.lastIndex is now 8
> a.exec("test1323")
< null // match begins at 8, no match found, a.lastIndex is reset to 0
> a.exec("test1323")
< ["1323"] // match begins at 0, match found at index 4...7, a.lastIndex is now 8
类似问题can be found in this answer的长时间干旱。