在JavaScript 正規表示式中擷取多個群組
在JavaScript 中使用正規表示式時,可以擷取字串中的多個匹配組。但是,可以捕獲和檢索的組數量是有限的。
考慮以下 JavaScript 正規表示式:
"foo bar baz".match(/^(\s*\w+)+$/)
人們可能會期望此正規表示式會傳回包含整個陣列的陣列字串「foo bar baz」以及每個單獨的單字:
["foo bar baz", "foo", " bar", " baz"]
但是,正則表達式實際上僅返回最後捕獲的匹配:
["foo bar baz", " baz"]
出現此行為的原因是,在大多數情況下正規表示式風格,僅保留重複捕獲組的最後一次捕獲。在 JavaScript 中,重複捕獲組只能捕獲每次匹配的指定數量的字串。
要克服此限制,有幾個選項:
範例:
符合字串
var text = "a;b;<c;d;e;f>;g;h;i;<no no no>;j;k;<xx;yy;zz>;"; var r = /<(\w+(;\w+)*)>/g; var match; while ((match = r.exec(text)) != null) { print(match[1].split(";")); }
此方法使用兩級匹配從字串中提取單字。
以上是當重複僅保留最後一個符合項目時,如何在 JavaScript 正規表示式中擷取多個群組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!