正则表达式,超过九对括号

时间:2014-06-10 16:31:28

标签: javascript regex

我有一对带有十对括号的正则表达式。使用RegExp.$n我需要访问括号对1,2和10.在JS中,只能访问最多为9的括号对。因为我不需要访问对3到9,有没有办法改变正则表达式这样的括号不算数?然后我可以通过RegExp.$3访问括号对9。我对这个问题的任何其他解决方案也很满意。谢谢!

2 个答案:

答案 0 :(得分:0)

匹配结果可以按组编号索引(整个匹配总是有一个隐含组0):

> "banana".match(/()()()()()()()()()()(na)+/)[11]
"na"
> "banana".match(/()()()()()()()()()()(na)+/)[0]
"nana"

// Works with exec too
> /()()()()()()()()()()(na)+/.exec("banana")[11]
"na"

请注意,在replace()范围内,似乎没有对组号的限制:

> "banana".replace(/()()()()()()()()()()(na)+/, "[$11]")
"ba[na]"

要回答问题的其他部分 - 是的,确实可以使用(?:foo)语法而不是{{1}创建所谓的非捕获组 }。

答案 1 :(得分:0)

您可以使用?:为不需要稍后访问的内容创建非捕获组。

"rex".match(/(r)(?:e)(x)/)
// ["rex", "r", "x"]