开发者

Replace spaces but not when between parentheses

I guess I can do this with multiple regexs fairly easily, but I want to replace all the spaces in a string, but not when those spaces are between parentheses.

For example:

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

After the regex I want the string to be

Hereisastring(that I 开发者_Python百科want to)replacespacesin.

Is there an easy way to do this with lookahead or lookbehing operators?

I'm a little confused on how they work, and not real sure they would work in this situation.


Try this:

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

A quick explanation:

\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

In plain English: it matches one or more white space chars if either a ( or the end-of-input can be seen ahead without encountering any parenthesis in between.

An online Ideone demo: http://ideone.com/jaljw

The above will not work if:

  • there are nested parenthesis
  • parenthesis can be escaped
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜