我發現在我的代碼有趣的問題。 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 College CA Bug
- 3. javascript IE bug
- 4. javascript drop down bug
- 5. Javascript拆分(Bug?)
- 6. Javascript Bug /毛刺?
- 7. Slider bug javascript
- 8. Bug動畫Javascript
- 9. RegExp.Test總是返回false
- 10. 正則表達式RegExp.test
- 11. RegExp.test不能正常工作?
- 12. 爲什麼RegExp.test()不一致?
- 13. Xcode bug與git?
- 14. Javascript - switch case - reactjs bug?
- 15. Javascript slideshow bug(Scriptaculous based)
- 16. SoundCloud Javascript API SC.Connect Bug
- 17. yahoo gifshot javascript numframe bug
- 18. 的Bug在JavaScript中
- 19. Javascript quote escape to bug
- 20. JavaScript RegExp.test()返回false,儘管它應該返回true
- 21. JavaScript Regexp.test返回意想不到的結果
- 22. 益智與PictureBoxes bug
- 23. ExifInterface bug與Nexus 5
- 24. IE的Bug與CSS?
- 25. Bug與設置currentPageIndicatorTintColor
- 26. xul menydist bug與pydom
- 27. JavaScript鴨子狩獵bug
- 28. JavaScript bug,戰列艦遊戲
- 29. Zurb基金會5.1.1 Javascript bug
- 30. IE8 jquery Javascript「Error:Object required」Bug
非常感謝 – Herrgott