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)
但是,鉴于上面的输入字符串,输出将是:
one / two / three //
Run Code Online (Sandbox Code Playgroud)
那是因为///
匹配两对斜线,每对都把它变成一个,就是这样.正则表达式不是迭代的.所以我们要找的是匹配两个或更多,这将给出我在开始时写的答案.
请注意,这也可以:
/\/+/g
Run Code Online (Sandbox Code Playgroud)
但是它会有不好的性能,因为它会匹配单斜杠并用相同的字符串替换它们.
你应该改用:
"some string".replace(/\/+/g, '/')
Run Code Online (Sandbox Code Playgroud)
+
表示匹配一个或多个。/
用于以其字面形式分隔正则表达式。所以你必须用反斜杠来逃避它。