我的字符串是:(as(dh(kshd)kj)ad)... ()()
如何用正则表达式计算括号的数量?我想选择从第一个左括号开始到 ...
将其应用于上面的示例,这意味着我想获取此字符串:(as(dh(kshd)kj)ad)
我试着写了,但这行不通:
var str = "(as(dh(kshd)kj)ad)... ()()";
document.write(str.match(/(.*)/m));
最佳答案
正如我在评论中所说,与普遍的看法相反(不要相信人们所说的一切)匹配嵌套括号可以使用正则表达式。
使用它的缺点是您只能做到固定的嵌套级别。对于您希望支持的每个额外级别,您的正则表达式将越来越大。
但是不要相信我的话。让我演示给你看。正则表达式 \([^()]*\)
matches one level .最多两个级别 see the regex here .为了符合您的情况,您需要:
\(([^()]*|\(([^()]*|\([^()]*\))*\))*\)
它将匹配粗体部分:<b>(as(dh(kshd)kj)ad)</b>... ()()
检查 DEMO HERE看看我所说的固定嵌套级别是什么意思。
等等。要继续添加级别,您所要做的就是更改最后一个 [^()]*
属于 ([^()]*|\([^()]*\))*
(check three levels here)。正如我所说,它会变得越来越大。
关于javascript - 用正则表达式计算括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18703187/