我很好奇爲什麼以下RegEx匹配返回兩次相同的匹配。爲什麼這個Javascript RegExp返回兩次相同的匹配?
var line = "APT5000* A 00001";
var matches = line.match(new RegExp("^(.{3})", "i"));
console.log('Number of matches: %d', matches.length);
console.log('matches[0]: %s', matches[0]);
console.log('matches[1]: %s', matches[1]);
結果如下輸出:
Number of matches: 2
matches[0]: APT
matches[1]: APT
我本來預期,而不是隻有一個匹配。
各種資源在線表明這是預期行爲,第一個結果始終是「完整匹配」,然後是特定匹配。
我的問題只是這個......「爲什麼?這種行爲背後的邏輯是什麼?」
試試這個:'new RegExp(「^(。{3})。{3}(。{3})」,「i」)''。你看到發生了什麼? – dasblinkenlight
*捕獲組和反向引用是正則表達式的一些更有趣的功能。你在子表達式中放置一個子表達式,你可以用'\ 1'或'$ 1' *來獲取捕獲。並且'\ 0','$ 0'或ECMAScript特定的'$&'返回完整匹配。 – revo