[英]Regular expression with more than nine pairs of brackets
我有一个带有十对方括号的正则表达式。 使用RegExp.$n
我需要访问括号对1、2和10。在JS中,只能访问不超过9的括号对。由于我不需要访问3至9的括号对,因此可以更改常规这样的括号不算数吗? 然后我可以通过RegExp.$3
访问支架对9。 对于此问题的任何其他解决方案,我也感到满意。 谢谢!
匹配结果可通过组号索引(整个匹配中始终存在一个隐式组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)
语法而不是(foo)
来创建所谓的非捕获组 。
您可以使用?:
创建非捕获组,以用于以后不需要访问的内容。
"rex".match(/(r)(?:e)(x)/)
// ["rex", "r", "x"]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.