我發現在我的代碼有趣的問題。 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