2014-09-10 117 views
0

我有这个网址:的JavaScript replace()方法不工作

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); 

作为一个提醒,我仍然得到旧的URL。这段代码有什么问题? 谢谢。

+0

用它尝试'.replace(/ \ //克, '\\ /')' – 2014-09-10 08:21:03

+0

测试:''\/'==='/'' – user2864740 2014-09-10 08:45:41

回答

5

如果要打印\,则必须用另一个反斜杠进行转义。

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

另外,如果你想replace功能,以取代所有出现,你必须通过一个g改性剂而不是字符串正则表达式。如果你传递一个字符串,它只会替换第一个匹配,然后结束,但用修饰符会找到所有匹配。

+3

您还需要使用正则表达式'/ \ // g'来匹配所有斜线,而不仅仅是第一个。 – 2014-09-10 08:21:19

1

试试这个代码fiddle

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

你需要加一个g将其设置为全球性的,以取代所有的“/”并在您需要添加“\”替换字符串。

1

你必须添加一个additinal反斜杠才能正确地转义它。

随着replace你只会取代第一场比赛。您也可以使用正则表达式,就像您在其他帖子中看到的那样。但你也可以用简单的splitjoin功能

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

Demo

相关问题