最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

Javascript:如何在 RegEx .exec 结果中获取多个匹配项

IT培训 admin 4浏览 0评论

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 属性)。

发布评论

评论列表 (0)

  1. 暂无评论