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