我发现在我的代码有趣的问题。 Here是我的代码的简化版本。调用regex.test
会在您每次拨打电话时更改其输出值。你可以尝试在devtools中做到这一点,'选择评估',它会显示你不同的值。Bug与RegExp.test(JavaScript)
2
A
回答
4
问题是,您在正则表达式中使用的是/g
- 使用此类时,正则表达式会多次执行,它会始终从上次停止的位置开始。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/lastIndex
此属性设置仅在正则表达式实例所使用的“G”标志,以表明全局搜索。以下规则:
如果lastIndex的比串,测试()和exec()失败的长度大,则lastIndex的被设置为0
如果lastIndex的是等于该字符串的长度如果正则表达式匹配空字符串,则正则表达式匹配从lastIndex开始的输入。
如果lastIndex的是等于该字符串的长度,并且如果正则表达式不匹配空字符串,则正则表达式不匹配输入,并且lastIndex的复位为0。
否则,lastIndex的被设定为最近比赛之后的下一个位置。
您可以通过在循环做console.log(regex.lastIndex)
验证这一点:
for (var a = 0; a < 10; a++) {
console.log(regex.lastIndex)
if (!regex.test(inner)) {
log.innerHTML += "true";
}
else {
log.innerHTML += "false";
}
log.innerHTML += " ";
}
你会看到它交替0之间18.所以,当它从0开始,它匹配,当它开始于18 ,它不匹配。
相关问题
- 1. 的Javascript regexp.test().NET相当于
- 2. Javascript Bug /毛刺?
- 3. Javascript College CA Bug
- 4. Xcode bug与git?
- 5. SoundCloud Javascript API SC.Connect Bug
- 6. yahoo gifshot javascript numframe bug
- 7. Javascript slideshow bug(Scriptaculous based)
- 8. 的Bug在JavaScript中
- 9. ExifInterface bug与Nexus 5
- 10. xul menydist bug与pydom
- 11. IE的Bug与CSS?
- 12. Bug与设置currentPageIndicatorTintColor
- 13. 益智与PictureBoxes bug
- 14. 我应该regexp.test之前,我string.replace?
- 15. IE8 jquery Javascript“Error:Object required”Bug
- 16. JavaScript鸭子狩猎bug
- 17. 的Bug tensorflow tuttorial与量化
- 18. PHP - BUG与filter_var和FILTER_VALIDATE_FLOAT
- 19. iPhone Bug应用程序bug问题与挑战
- 20. JavaScript setInterval功能:bug还是不是?
- 21. Chrome Javascript日期构造器BUG?
- 22. Javascript图像作物画布bug
- 23. 解决的bug在javascript - 标签功能
- 24. Safari iOS 9.0.2与.css左/右的jquery bug
- 25. iOS 8 Bug与UIImagePickerController图像作物
- 26. Android的bug与按钮和editText
- 27. C++ OpenGL与Visual Studio发布 - 配置 - Bug
- 28. 如何解决IE 7的bug(Windows调整与GWT应用程序的bug)
- 29. org.w3c.dom.Node.insertBefore:NullPointerException,Bug?
- 30. CSS:Display-Bug
非常感谢 – Herrgott