繁体   English   中英

带有九对以上括号的正则表达式

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM