如何编写JavaScript正则删除@包裹内容外的所有小括号
实现方案
核心逻辑是优先匹配并保留两个@包裹的完整片段,其余场景的(、)直接删除,利用JavaScript字符串replace方法的回调函数做分支判断即可实现需求。
正则表达式
/(@[^@]*@)|[()]/g
完整可运行代码
const originalStr = "( [15] == @value 1@ || [15] == @value 2@ ) && ( [5] == @value 3 (ignore these)@ || [5] == @value 4@ ) || ( [2] == @value 5@ )"; const processedStr = originalStr.replace(/(@[^@]*@)|[()]/g, (match, group1) => { // 匹配到@包裹的片段直接返回原内容 if (group1) return group1; // 其余匹配到的括号直接返回空删除 return ''; }); console.log(processedStr);
输出结果
[15] == @value 1@ || [15] == @value 2@ && [5] == @value 3 (ignore these)@ || [5] == @value 4@ || [2] == @value 5@
规则说明
(@[^@]*@):第一捕获组,匹配成对@之间的所有内容,[^@]*保证不会跨多个@片段匹配|:逻辑或,同时匹配两种规则的内容[()]:匹配单个左括号或右括号g:全局匹配标识,处理字符串中所有符合规则的内容
内容的提问来源于stack exchange,提问作者LauraEld
相关产品推荐
相关产品推荐

