正则表达式移除括号内文本(支持括号截断、嵌套括号场景)
移除括号及内部内容的正则实现
核心正则表达式
开启全局匹配模式,将匹配到的内容替换为空字符串即可完成裁剪:
\((?:[^()]|\((?R)\))*?\)?|\)
要求适配说明
- 惰性捕获规则:模式中使用
*?惰性量词,匹配时优先命中最短符合条件的片段,不会出现跨括号段的过度匹配问题。 - 嵌套括号支持:通过
(?R)递归引用整个正则规则,可自动识别任意层级的嵌套括号结构,无论多少层(...(...)...)格式的嵌套都能完整圈定括号范围,不会提前截断匹配内容。 - 残缺括号兼容:
- 模式末尾的
\)?将闭括号设为可选匹配项,遇到缺失闭括号的截断场景时,会自动匹配从开括号起始到连续括号段结束的所有内容,不会残留开括号及内部残缺片段 - 单独的
\)分支会匹配所有无对应开括号的孤立闭括号,正确处理缺失开括号的截断场景
- 模式末尾的
代码使用示例(JavaScript)
function stripBrackets(text) { // 必须开启全局匹配修饰符g const bracketPattern = /\((?:[^()]|\((?R)\))*?\)?|\)/g; return text.replace(bracketPattern, ''); }
典型场景验证
- 普通括号场景:输入
商品(已售罄)下架→ 输出商品下架 - 多层嵌套场景:输入
通知(全员(含外包)需参会)已发送→ 输出通知已发送 - 缺失闭括号场景:输入
备注信息(待补充→ 输出备注信息 - 缺失开括号场景:输入
数据异常)需复核→ 输出数据异常需复核 - 混合场景:输入
A模块(B功能(C子功能))已上线)D模块待开发→ 输出A模块已上线D模块待开发
内容的提问来源于stack exchange,提问作者Vitaly Vesyolko
相关产品推荐
相关产品推荐

