【问题标题】:Replace spaces but not when between parentheses替换空格,但不是在括号之间
【发布时间】:2011-09-28 02:13:15
【问题描述】:

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

例如:

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

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

Hereisastring(that I want to)replacespacesin.

有没有一种简单的方法可以使用前瞻或前瞻运算符来做到这一点?

我对它们的工作方式有点困惑,并且不确定它们是否能在这种情况下工作。

【问题讨论】:

  • 这些括号可以嵌套吗?

标签: javascript regex


【解决方案1】:

试试这个:

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

如果出现以下情况,上述方法将不起作用:

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

【讨论】:

  • 非常感谢。这太棒了!
猜你喜欢
  • 2012-12-17
  • 2021-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-31
  • 2021-06-06
  • 1970-01-01
  • 2012-10-26
相关资源
最近更新 更多