Javascript:如何在 RegEx .exec 结果中获取多个匹配项
当我跑步时
/(a)/g.exec('a a a ').length
我明白了
2
但我认为它应该返回
3
因为字符串中有 3 个
a
,而不是 2 个!
为什么会这样?
我希望能够在 RegEx 中搜索所有出现的字符串并迭代它们。
FWIW:我正在使用 node.js
回答如下:exec()
仅返回第一场比赛的捕获集,而不是您期望的比赛集。所以你真正看到的是$0
(整场比赛,“a”)和$1
(第一次捕获)——即长度为 2 的数组。exec()
同时被设计为您可以再次调用它 以获得next 匹配的捕获。来自MDN:
如果您的正则表达式使用“g”标志,您可以多次使用 exec 方法来查找同一字符串中的连续匹配项。当您这样做时,搜索将从正则表达式的 lastIndex 属性指定的 str 的子字符串开始(测试也会推进 lastIndex 属性)。
Javascript:如何在 RegEx .exec 结果中获取多个匹配项
当我跑步时
/(a)/g.exec('a a a ').length
我明白了
2
但我认为它应该返回
3
因为字符串中有 3 个
a
,而不是 2 个!
为什么会这样?
我希望能够在 RegEx 中搜索所有出现的字符串并迭代它们。
FWIW:我正在使用 node.js
回答如下:exec()
仅返回第一场比赛的捕获集,而不是您期望的比赛集。所以你真正看到的是$0
(整场比赛,“a”)和$1
(第一次捕获)——即长度为 2 的数组。exec()
同时被设计为您可以再次调用它 以获得next 匹配的捕获。来自MDN:
如果您的正则表达式使用“g”标志,您可以多次使用 exec 方法来查找同一字符串中的连续匹配项。当您这样做时,搜索将从正则表达式的 lastIndex 属性指定的 str 的子字符串开始(测试也会推进 lastIndex 属性)。