我试图找出我在 javascript 中看到的一些奇怪的逻辑, 我有下一个代码:
var rgx = /(\S*)\s(\S*)/g;
rgx.exec("Yosi 1"); // returns ["Yosi 1","Yosi","1"]
rgx.exec("Yosi 1"); // returns null
rgx.exec("Yosi 1"); // returns ["Yosi 1","Yosi","1"]
为什么第二次我得到空值?我需要以某种方式重置正则表达式对象吗?
最佳答案
According to the documentation ,正则表达式对象的 lastIndex
属性在每次使用 g
时都会更新。在第一次匹配之后,lastIndex
将位于字符串的末尾,因此当您将它与同一字符串进行比较时,它会开始在末尾查找匹配项,因此它不会找到任何内容。
您可以不使用 g
或使用 .match
或其他替代方案,具体取决于您的用例。
关于javascript - 相同的 RegExp 返回不同的结果 - 第一次正确结果,第二次为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29501362/