2011-09-27 78 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。 –