2011-09-27 27 views
5

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

例如:

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

正则表达式后,我希望字符串是

Hereisastring(that I want to)replacespacesin. 

有一种简单的方式与超前或lookbehing运营商能够做到这一点?

我对他们是如何工作有点困惑,并不确定他们会在这种情况下工作。

+2

可以在这些括号嵌套? –

+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

的,如果以上都不行:

  • 有嵌套括号
  • 括号可以躲过
+0

非常感谢。这很棒! –

+0

不客气Senica。 –