首页 > 解决方案 > 没有全局标志的正则表达式分组 OR 运算符匹配策略

问题描述

代码片段

'a b'.match(/a|b/ig)

返回

["a", "b"]

这是完全可以预料的,因为我们正在搜索带有 'a' 或 'b' 的子字符串,但为什么

'a b'.match(/(a|b)/i)

返回

["a", "a"]

作为输出, a 如何匹配两次?它不应该["a"]只是'a b'.match(/a|b/i)

标签: javascriptregexstringstring-matchingregex-group

解决方案


'a b'.match(/(a|b)/i)您的第一个示例中,您有一个未退出的捕获组。结果数组包含完整匹配的值 (ie a) 和第一个捕获组的值 (ie a)。

这就是为什么你有["a", "a"]


推荐阅读