首页 > web前端 > js教程 > 正文

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

Barbara Streisand
发布: 2024-11-11 08:30:03
原创
967 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板