Javascript replace()方法不起作用

时间:2014-09-10 08:18:36

标签: javascript

我有这个网址:

  

http://example.com/example/sample/example.jpg

我想要这个:

  

http:\ / \ /example.com \ / example \ / sample \ /example.jpg

I wrote this code : 
function addslashes(str) {
  return str.replace('/', '\/');
}

var url = http://example.com/example/sample/example.jpg
var t = addslashes(url);
alert(t);

作为提醒,我仍然会收到旧网址。这段代码出了什么问题? 感谢。

3 个答案:

答案 0 :(得分:5)

如果你想打印\,你必须用另一个反斜杠来逃避它。

function addslashes(str) {
  return str.replace(/\//g, '\\/');
}

此外,如果您希望replace函数替换所有匹配项,则必须使用带有g修饰符而不是字符串的正则表达式。如果你传递一个字符串,它将只替换第一个匹配然后结束但是使用修饰符它将找到所有匹配。

答案 1 :(得分:1)

尝试此代码fiddle

function addslashes(str) {
  return str.replace(/\//g, '\\/');
}

你需要添加g以将其设置为全局,替换所有'/'并在替换字符串中添加'\'。

答案 2 :(得分:1)

你必须添加一个附加反斜杠才能正确地逃避它。

使用replace,您只能替换第一场比赛。您也可以使用正则表达式,如您在其他帖子上看到的那样。但您也可以使用简单的splitjoin函数

function addslashes(url) {
    url.split('/').join('\\/');
}

<强> Demo