2013-10-08 43 views
0

我想从我拥有的URL中删除/view-photo/P1270649。我目前正在使用这样做:replace()不会替换选定的文本

var pathname = window.location.pathname; 
var replaced = pathname.replace('/view-photo/' + /([A-Z0-9]+)/g, ''); 

但是,没有任何反应,当我尝试使用这个。您可以see it in action on JSFiddle。我该如何解决这个问题?

回答

8

您不能以这种方式组合字符串和正则表达式。做最简单的事情将是完全放置在正则表达式:

var replaced = pathname.replace(/\/view-photo\/([A-Z0-9]+)/g, ''); 

发生了什么事原来是正则表达式对象是被转换成字符串,这实际上使你的replace()是这个样子:

var replaced = pathname.replace("/view-photo//([A-Z0-9]+)/g", ''); 

......它将搜索该字符串的字面版本,当然不在那里。

1

建设正则表达式时,“文字失败:

var replaced = pathname.replace('/view-photo/' + /([A-Z0-9]+)/g, ''); 

应该

var replaced = pathname.replace(/view-photo/([A-Z0-9]+)/g, ''); 
0

试试这个,

$(document).ready(function() { 
    var pathname = 'http://localhost/galleri/view-photo/P1270649'; 
    var replaced = pathname.replace(/view-photo\/([A-Z0-9]+)/g, ''); 
    // or you can use it like 
    //var replaced = pathname.replace(/\/view\-photo\/([A-Z0-9]+)/g, ''); 
    alert(replaced); 

}); 

Fiddle

1

I W建议另一种方法(纯js)

var pathname = window.location.pathname; 
var i = pathname.slice(0,pathname.indexOf('/view-photo')); 
+0

我得到一个错误,如果我使用'indexOf'所以我不能使用该功能 – Erik

相关问题