我的字符串是: (as(dh(kshd)kj)ad)... ()()
如何用正则表达式计算括号?我想选择从第一个左括号开始并在...
将它应用到上面的例子中,这意味着我想得到这个字符串: (as(dh(kshd)kj)ad)
我试图写它,但这不起作用:
var str = "(as(dh(kshd)kj)ad)... ()()";
document.write(str.match(/(.*)/m));
Run Code Online (Sandbox Code Playgroud)
正如我在评论中说,流行的看法相反(不相信一切人说)匹配嵌套的括号内是可能的正则表达式。
使用它的缺点是您只能在嵌套的固定级别上执行此操作。对于您希望支持的每个额外级别,您的正则表达式将越来越大。
但不要相信我的话。让我演示给你看。正则表达式\([^()]*\) 匹配一级。对于最多两个级别,请参阅此处的正则表达式。为了符合您的情况,您需要:
\(([^()]*|\(([^()]*|\([^()]*\))*\))*\)
Run Code Online (Sandbox Code Playgroud)
它将匹配粗体部分: (as(dh(kshd)kj)ad)... ()()
等等。要继续添加级别,您所要做的就是将最后[^()]*一部分更改为([^()]*|\([^()]*\))*(在此处检查三个级别)。正如我所说,它会变得越来越大。