搜尋

首頁  >  問答  >  主體

javascript - 為什麼上面是fasle,下面是true

為什麼上面是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
}
给我你的怀抱给我你的怀抱2865 天前659

全部回覆(3)我來回復

  • 为情所困

    为情所困2017-05-18 11:03:39

    以下摘錄自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。

    回覆
    0
  • 高洛峰

    高洛峰2017-05-18 11:03:39

    回覆
    0
  • PHPz

    PHPz2017-05-18 11:03:39

    因為正則中使用了全域匹配標記g,正規表示式會記錄匹配成功的位置lastIndex,繼續匹配時就從該位置往後匹配。
    所以第二次配對的時候,沒有不再看前面的cat了,去掉g即可。

    回覆
    0
  • 取消回覆