当前位置: 首页 > 面试题库 >

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

盖绪
2023-03-14
问题内容

当我跑步

/(a)/g.exec('a a a ').length

我懂了

2

但我认为它应该回来

3

因为a字符串中有3 s,而不是2!

这是为什么?

我希望能够在RegEx中搜索字符串的所有出现并对其进行迭代。

FWIW:我正在使用node.js


问题答案:

exec()仅返回第一个匹配项的捕获集,而不返回您期望的匹配项。因此,您真正看到的是$0(整个匹配项“
a”)和$1(第一个捕获项),即长度为2的数组exec()同时,它的设计使您可以 再次 调用它以获取 下一个
匹配项的捕获项。从MDN:

如果您的正则表达式使用“
g”标志,则可以多次使用exec方法在同一字符串中查找连续的匹配项。这样做时,搜索将从正则表达式的lastIndex属性指定的str的子字符串开始(测试还将使lastIndex属性前进)。



 类似资料:
  • 问题内容: 如何找到与Java中的正则表达式匹配的所有子字符串?(类似于.Net中的Regex.Matches) 问题答案: 创建一个Matcher并用于将其放置在下一个匹配项上。

  • 问题内容: 当我从命令行调用存储的proc时,我得到以下信息。 这是我的Java代码的片段 当我执行该语句时,仅返回event_table结果。我阅读以下查询: 我试图避免对数据库发出多个请求,因为它非常慢(300毫秒,具体取决于多少结果) 可能吗? 问题答案: 我找到了这篇很棒的文章。http://www.herongyang.com/JDBC/MySQL-CallableStatement-M

  • 问题内容: 我正在使用CTest(CMake的一部分)进行自动化测试。 如何在Jenkins仪表板中获得CTest结果?或者,换句话说,如何使CTest以类似JUnit的XML输出? 问题答案: 在Jenkins中,在CMake部分(可能是通过CMake插件完成)之后,添加以下批处理脚本,或适应Linux上的构建: 是CMake插件中的构建目录 是我所有测试所在的子目录 使CTest输出为XML(

  • 我需要获取数据库中的所有记录作为数组使用在教义中,我的查询是这样的 即使将水合模式设置为,我也会将结果作为对象 我犯了什么错误?

  • 当Callable返回与条件匹配的结果时,是否有一种方法可以停止Javas ExecuterService? 我有以下算法(代码A): 平均而言,functionB的运行速度是functionA的5倍(在8个内核上)。 这很好,但不完美。在functionA中,someFunction()在找到结果!=null之前平均被调用大约20次。在functionB中,someFunction()总是被调用

  • 问题内容: 如何通过所有多词搜索仅获取经过过滤的匹配结果。我有这个示例表,其中titleid是一个映射int字段,personid是一个关键字: 删除结果为: 使用这样的示例查询: 我得到以下结果: 也许这会有所帮助,我在sql中进行了查询并获得了预期的结果。我所做的是让查询给我与搜索到的参数数量匹配的titleid之和。这只是为了更多地自我解释,其思想是使用elasticsearch。 问题答案