使用Javascript用单斜杠替换文本中的多个斜杠

时间:2014-05-10 17:19:52

标签: javascript regex

我有这个字符串

we have two papers // two handbags /// three bags //// four bottles

我希望它成为

we have two papers / two handbags / three bags / four bottles

我尝试了string.replace(///g, '/'),但它无法正常工作

它返回语法错误。

3 个答案:

答案 0 :(得分:20)

答案是:

'one / two // three ///'.replace(/\/\/+/g, '/')

让我们一步一步地说明为什么它是正确的。

首先,处理错误。之所以发生这种情况,是因为斜线没有逃脱。正则表达式以/开头,并且匹配所有出现的结尾都是/ g,所以要匹配我们写的所有两个斜杠:

/\/\//g
  1. 开始正则表达式 - /
  2. 匹配一个斜杠 - /
  3. 匹配另一个斜杠 - /
  4. 所有事件 - / g
  5. 但是,鉴于上面的输入字符串,输出将为:

    one / two / three //
    

    这是因为///匹配两对斜杠,因为每一对都将它变为一个,而这就是它。正则表达式不是迭代的。所以我们正在寻找的是匹配两个或更多,这将给出我在开始时写的答案。

    请注意,这也可以:

    /\/+/g
    

    然而,它会有不好的性能,因为它会匹配单斜杠并用相同的字符串替换它们。

答案 1 :(得分:4)

您的代码无效,因为您需要转义斜杠并添加+,这意味着它匹配每个斜杠数

string.replace(/\/+/g, '\/')将有效。

答案 2 :(得分:3)

您应该使用:

"some string".replace(/\/+/g, '/')

+表示匹配一个或多个。 /用于以文字形式分隔正则表达式。所以你要用反斜杠逃脱它。