javascript - 用正则表达式计算括号

标签 javascript regex

我的字符串是:(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/

相关文章:

regex - .htaccess 正则表达式匹配最后一个斜杠之前的所有内容(甚至斜杠)

javascript - GDownloadUrl 剖析

javascript - 通过索引jquery获取数组值

javascript - 是否可以根据屏幕尺寸设置表格选项?

python - 从日志文件中提取特定的词(不是关键字)

javascript - 替换 HTML 标签或检索其中的文本

c# - 如何使用 JavaScript 从外部调用 C# 应用程序?

javascript - Jasmine 期待(结果代码)。toBe(200 或 409)

java - 在单个语句中替换破折号和空格

java - 解析选项字符串的正则表达式