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