在 JavaScript 正则表达式中捕获任意组
在 JavaScript 正则表达式中使用捕获组时,了解其限制至关重要。默认情况下,仅保留重复组的最后一次捕获,即使该组是嵌套的。
示例:嵌套捕获组
考虑以下正则表达式:
/^(\s*\w+)+$/
预计输出:
["foo bar baz", "foo", " bar", " baz"]
实际输出:
["foo bar baz", " baz"]
在这种情况下,仅返回最后捕获的组“baz”。这是因为 JavaScript 只保留每个重复组的最终捕获。
捕获多个组的选项
要克服此限制,可以使用以下几个选项:
示例:Exec 循环和拆分
以下是使用 exec 循环捕获和拆分嵌套组的示例:
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(";")); } // Output: // ["c", "d", "e", "f"] // ["xx", "yy", "zz"]
在此示例中,嵌套组被捕获为组 1,然后在分号上拆分
相关问题
以上是如何在重复的 JavaScript 正则表达式中捕获多个组?的详细内容。更多信息请关注PHP中文网其他相关文章!