Javascript 正则表达式删除除特殊字符之间的所有括号

Javascript regEx to remove all parentheses except between special characters

我需要一个正则表达式来从字符串中删除所有 (),两个 @.

之间的除外

示例:

( [15] == @value 1@ || [15] == @value 2@ )  &&  ( [5] == @value 3 (ignore these)@ || [5] == @value 4@ )  ||  ( [2] == @value 5@ )

我需要的字符串:

[15] == @value 1@ || [15] == @value 2@  &&  [5] == @value 3 (ignore these)@ || [5] == @value 4@  ||  [2] == @value 5@ 

我尝试用这个非捕获组用空格分割除了@之间的空格但找不到方法:

(?:@[^@]*@|\S)

我面临着解决这个问题的压力,感谢任何帮助,谢谢。

您可以使用此正则表达式进行匹配:

\s*[()](?=(?:[^@]*@[^@]*@)*[^@]*$)\s*

并替换为空字符串。

RegEx Demo

正则表达式详细信息:

  • \s*:匹配0个或多个空格
  • [()]:匹配()
  • (?=: 开始正面前瞻
    • (?:[^@]*@[^@]*@)*:匹配0对或多对@...@子串
    • [^@]*:除了 @
    • 之外再匹配 0 个
    • $:结束
  • ): 结束正面前瞻
  • \s*:匹配0个或多个空格