替换空格,但不包括括号内的空格

5
我可以使用多个正则表达式来轻松完成此操作,但我想替换字符串中的所有空格,但不包括在括号内的空格。
例如:
Here is a string (that I want to) replace spaces in.

在正则表达式之后,我希望字符串变成:
Hereisastring(that I want to)replacespacesin.

有没有使用前瞻或后顾运算符来轻松完成这个任务的方法?
我有些困惑它们的工作方式,并不确定它们是否适用于这种情况。

2
这些括号可以嵌套吗? - Tim Pietzcker
1个回答

9

试试这个:

replace(/\s+(?=[^()]*(\(|$))/g, '')

一个快速的解释:

\s+          # one or more white-space chars
(?=          # start positive look ahead
  [^()]*     #   zero or more chars other than '(' and ')'
  (          #   start group 1
    \(       #     a '('
    |        #     OR
    $        #     the end of input
  )          #   end group 1
)            # end positive look ahead

在通俗易懂的语言中,如果一个(或者输入结束符前面没有遇到任何括号,它将匹配一个或多个空格字符。这是一个在线Ideone演示:http://ideone.com/jaljw
上述方法不适用于以下情况:
- 存在嵌套的括号 - 括号可以被转义

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接