我有这个字符串
we have two papers // two handbags /// three bags //// four bottles
我希望它成为
we have two papers / two handbags / three bags / four bottles
我尝试了string.replace(///g, '/')
,但它无法正常工作
它返回语法错误。
答案 0 :(得分:20)
答案是:
'one / two // three ///'.replace(/\/\/+/g, '/')
让我们一步一步地说明为什么它是正确的。
首先,处理错误。之所以发生这种情况,是因为斜线没有逃脱。正则表达式以/开头,并且匹配所有出现的结尾都是/ g,所以要匹配我们写的所有两个斜杠:
/\/\//g
但是,鉴于上面的输入字符串,输出将为:
one / two / three //
这是因为///
匹配两对斜杠,因为每一对都将它变为一个,而这就是它。正则表达式不是迭代的。所以我们正在寻找的是匹配两个或更多,这将给出我在开始时写的答案。
请注意,这也可以:
/\/+/g
然而,它会有不好的性能,因为它会匹配单斜杠并用相同的字符串替换它们。
答案 1 :(得分:4)
您的代码无效,因为您需要转义斜杠并添加+
,这意味着它匹配每个斜杠数
string.replace(/\/+/g, '\/')
将有效。
答案 2 :(得分:3)
您应该使用:
"some string".replace(/\/+/g, '/')
+
表示匹配一个或多个。 /
用于以文字形式分隔正则表达式。所以你要用反斜杠逃脱它。