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

10 javascript regex

我有这个字符串

we have two papers // two handbags /// three bags //// four bottles
Run Code Online (Sandbox Code Playgroud)

我希望它成为

we have two papers / two handbags / three bags / four bottles
Run Code Online (Sandbox Code Playgroud)

我试过string.replace(///g, '/')但它不起作用

它返回语法错误.

hai*_*lit 21

答案是:

'one / two // three ///'.replace(/\/\/+/g, '/')
Run Code Online (Sandbox Code Playgroud)

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

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

/\/\//g
Run Code Online (Sandbox Code Playgroud)
  1. 开始正则表达式 - /
  2. 匹配一个斜杠 - /
  3. 匹配另一个斜线 - /
  4. 所有事件 - /g

但是,鉴于上面的输入字符串,输出将是:

one / two / three //
Run Code Online (Sandbox Code Playgroud)

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

请注意,这也可以:

/\/+/g
Run Code Online (Sandbox Code Playgroud)

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


Ami*_*oki 6

你应该改用:

"some string".replace(/\/+/g, '/')
Run Code Online (Sandbox Code Playgroud)

+表示匹配一个或多个。/用于以其字面形式分隔正则表达式。所以你必须用反斜杠来逃避它。