爲什麼Javascript子匹配在設置g
修飾符時停止工作?JavaScript正則表達式和子匹配
var text = 'test test test test';
var result = text.match(/t(e)(s)t/);
// Result: ["test", "e", "s"]
以上優良工程,result[1]
是"e"
和result[2]
是"s"
。
var result = text.match(/t(e)(s)t/g);
// Result: ["test", "test", "test", "test"]
上面的內容忽略了我的捕獲組。以下是唯一有效的解決方案嗎?
var result = text.match(/test/g);
for (var i in result) {
console.log(result[i].match(/t(e)(s)t/));
}
/* Result:
["test", "e", "s"]
["test", "e", "s"]
["test", "e", "s"]
["test", "e", "s"]
*/
使用exec似乎不聽g修飾符,但它支持子匹配/組。所以結果將是第一個匹配(它基本上忽略了g修飾符) – 2009-05-09 21:03:37
添加了一個關於這個的澄清 - 你必須重複調用exec()來獲得多個匹配。 – hbw 2009-05-09 21:05:52
不是最優雅的解決方案。 我有些期望的輸出是這樣的: [ \t [ 「測試」, 「E」, 「S」], \t [ 「測試」, 「E」, 「S」], \t [」 test「,」e「,」s「], \t [」test「,」e「,」s「] – 2009-05-09 21:13:01