【问题标题】:Javascript regEx to remove all parentheses except between special charactersJavascript regEx 删除除特殊字符之间的所有括号
【发布时间】:2021-12-02 02:38:06
【问题描述】:

我需要一个正则表达式从字符串中删除所有(),两个@ 之间的除外。

例子:

( [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)

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

【问题讨论】:

  • 你必须使用正则表达式吗?

标签: javascript regex capturing-group


【解决方案1】:

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

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

并用空字符串替换。

RegEx Demo

正则表达式详细信息:

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

【讨论】:

  • 谢谢!适用于除 Safari 以外的大多数浏览器,我在此处收到此错误:“无效的正则表达式:无效的组说明符名称”
  • 这应该在旧浏览器中工作,因为我没有使用任何后视,但我不使用 safari
  • 我的错,这是另一个导致问题的正则表达式。
猜你喜欢
  • 1970-01-01
  • 2020-07-04
  • 2020-12-02
  • 2017-09-22
  • 2021-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多