首页 >web前端 >js教程 >如何在 JavaScript 正则表达式中捕获多个组?

如何在 JavaScript 正则表达式中捕获多个组?

Barbara Streisand
Barbara Streisand原创
2024-11-11 08:30:031045浏览

How to Capture Multiple Groups in JavaScript Regular Expressions?

访问 JavaScript 正则表达式中的所有捕获

尝试在 JavaScript 正则表达式中捕获多个组时会出现问题,其中只有最后一个组捕获被保留。

考虑以下内容例如:

"foo bar baz".match(/^(\s*\w+)+$/)

它不会返回 ["foo", "bar", "baz"] 等所有匹配项,而是只返回 ["baz"]。出现此行为的原因是重复的捕获组会覆盖以前的捕获。

要解决此问题,请考虑替代方法:

  • 按分隔符拆分: 如果可能,拆分字符串使用已知的分隔符而不是使用重复的捕获组。
  • 带 g 的正则表达式标志: 使用带有 g 标志的正则表达式来迭代所有匹配项。请注意,这可能并不完全等同于重复捕获组。
  • 多级匹配:执行多个正则表达式匹配以捕获特定模式,然后进一步拆分或处理它们。

例如,捕获包含在

中的单词序列>并将它们拆分为 ;,请考虑以下示例:
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(";"));
}

此正则表达式将捕获的序列拆分为单个单词。

参考文献:

  • [正则表达式信息:重复与捕获组](https://www.regular-expressions.info/repeating-a-capturing-group-vs-capturing-a-repeating-group)

以上是如何在 JavaScript 正则表达式中捕获多个组?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn