replace的回調函數

var string = "abc123-ii3-abc321-ii2";
string.replace(/(\d)-([\da-z]{1,4})/g,function () {
    console.log(arguments)
})
//結果以下
["3-ii3", "3", "ii3", 5, "abc123-ii3-abc321-ii2", callee: function, Symbol(Symbol.iterator): function]
["1-ii2", "1", "ii2", 16, "abc123-ii3-abc321-ii2", callee: function, Symbol(Symbol.iterator): function]

正則表達式裏存在全局g標誌時,匹配過程是一輪一輪的進行的,第一輪匹配時,該表達式匹配到了 3-ii3 ,而後匹配結束,此時的生成了一個arguments數組,第一個元素爲此時匹配到的字符,第二個元素爲正則式子第一組匹配到的內容,第三個爲第二組同上,第四個爲原字符串。而後從上次匹配到的最後一個字符索引+1以後開始匹配,就這樣直到遍歷完整個字符串爲止。正則表達式

regexp.exec(string)返回一個數組

["1-ii2", "1", "ii2", index: 16, input: "abc123-ii3-abc321-ii2"]當爲全局匹配時,第一個元素爲匹配到的最後一個內容,其他元素也是最後一次匹配到時的結果
相關文章
相關標籤/搜索