【发布时间】:2013-04-02 19:06:48
【问题描述】:
我想将/(a).(b)(c.)d/ 之类的正则表达式与"aabccde" 匹配,并返回以下信息:
"a" at index = 0
"b" at index = 2
"cc" at index = 3
我该怎么做? String.match 返回匹配列表和完整匹配开始的索引,而不是每次捕获的索引。
编辑:一个不能使用普通 indexOf 的测试用例
regex: /(a).(.)/
string: "aaa"
expected result: "a" at 0, "a" at 2
注意:问题类似于Javascript Regex: How to find index of each subexpression?,但我无法修改正则表达式以使每个子表达式都成为捕获组。
【问题讨论】:
-
您的所有子表达式都已在捕获组中。
-
@Asad,在哪里? 2 个字母不在捕获组内。
-
如果使用全局匹配,可以得到捕获组的重复案例。在这种情况下,您需要使用回调函数,如您在问题中的链接所示。
-
@canon 请检查我的编辑以获取一个无法使用的简单测试用例。
-
似乎没有任何函数可以返回此信息。但是,我很少看到任何用于获取匹配索引的用法,可能除了您想要编写正则表达式测试器的情况。
标签: javascript regex capturing-group