替换空格,但不在括号之间

时间:2011-09-27 18:05:12

标签: javascript regex

我想我可以很容易地使用多个正则表达式来做这个,但是我想替换字符串中的所有空格,但是当这些空格在括号之间时不能。

例如:

Here is a string (that I want to) replace spaces in.

在正则表达式之后我想要字符串

Hereisastring(that I want to)replacespacesin.

使用前瞻或外观操作符是否有一种简单的方法可以做到这一点?

我对他们的工作方式感到有些困惑,并且不确定他们是否会在这种情况下工作。

1 个答案:

答案 0 :(得分: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

如果符合以下条件,则上述操作无效:

  • 有嵌套括号
  • 括号可以转义