首页 > 解决方案 > 提取括号之间的所有字符

问题描述

我用了

let regExp = /\(([^)]+)\)/;

提取

(test(())) 

aaaaa (test(())) bbbb

但我只得到这个

(test(()

如何修复我的正则表达式?

标签: regex

解决方案


不要使用否定字符集,因为括号(())可能会出现在您想要的匹配项中。而是贪婪地重复,以便您尽可能匹配,直到引擎回溯并找到)右边的第一个:

console.log(
  'aaaaa (test(())) bbbb'
    .match(/\(.*\)/)[0]
);

请记住,这(以及一般的 JS 正则表达式解决方案)不能保证括号平衡,至少在没有额外的后处理/验证的情况下不能保证。


推荐阅读