為什麼上面是fasle,下面是true
var re = null ,result ,i;
for (i=0; i < 10; i++){
re = new RegExp("cat", "g");
re.test("catastrophe");
console.log(re.test("catastrophe")); //false
result = re.test("catastrophe");
console.log(result); //true
}
以下摘錄自http://www.w3school.com.cn/js...
JavaScript lastIndex 屬性
JavaScript RegExp 物件
定義和用法
lastIndex 屬性用於規定下次符合的起始位置。
語法
RegExpObject.lastIndex
說明
該屬性存放一個整數,它聲明的是上一次匹配文字之後的第一個字元的位置。
上次符合的結果是由方法 RegExp.exec() 和 RegExp.test() 找到的,它們都以 lastIndex 屬性所指的位置作為下次檢索的起始點。這樣,就可以透過重複呼叫這兩個方法來遍歷一個字串中的所有匹配文字。
該屬性是可讀可寫的。只要目標字串的下一次搜尋開始,就可以對它進行設定。當方法 exec() 或 test() 再也找不到可以匹配的文字時,它們會自動把 lastIndex 屬性重設為 0。
提示和註解
重要事項:不具有標誌 g 和不表示全域模式的 RegExp 物件不能使用 lastIndex 屬性。
提示:如果在成功地匹配了某個字串之後就開始檢索另一個新的字串,需要手動地把這個屬性設為 0。
因為正則中使用了全域匹配標記g,正規表示式會記錄匹配成功的位置lastIndex,繼續匹配時就從該位置往後匹配。
所以第二次配對的時候,沒有不再看前面的cat了,去掉g即可。