會有一個 lastIndex 屬性,記錄上一次批配到的字串,後面的位置(預設值為0)。
RegExp.lastIndex 屬性:
- RegExp.exec()、RegExp.test(),都是以 lastIndex 當作匹配比對起點
- 當匹配比對失敗,lastIndex 會重設為 0
- RegExp.lastIndex 值可手動設定
範例:
var str = 'abcde'; var RegExpObj = new RegExp('b', 'g'); RegExpObj.lastIndex; //0 預設值為 0 //第一次比對,比對成功,lastIndex 變為 2 RegExpObj.test(str); // true RegExpObj.lastIndex; //2 //第二次比對,從字串位置 2 開始比對,比對失敗,lastIndex 自動重置為 0 RegExpObj.test(str); // false RegExpObj.lastIndex; //0 //第三次比對,又從字串位置 0 開始比對,比對成功,lastIndex 變為 2 RegExpObj.test(str); // true RegExpObj.lastIndex; //2 //手動將 lastIndex 設為 1,再次比對,可成功比對到字串位置 1 的 「b」 RegExpObj.lastIndex=1; RegExpObj.lastIndex; //1 RegExpObj.test(str); // true
參考:
JavaScript lastIndex 属性
regexp.lastIndex - JavaScript | MDN
regex - Bug with RegExp in JavaScript when do global search - Stack Overflow
沒有留言:
張貼留言