0

我想/view-photo/P1270649从我拥有的 URL 中删除。我目前正在使用它来这样做:

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

但是,当我尝试使用它时没有任何反应。您可以在 JSFiddle 上看到它的实际效果。我该如何解决这个问题?

4

4 回答 4

9

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

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

最初发生的事情是正则表达式对象被转换为字符串,这实际上会使您replace()看起来像这样:

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

...这将搜索该字符串的文字版本,当然不存在。

于 2013-10-08T12:56:29.660 回答
1

' 字符在构建正则表达式时失败:

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

应该

var replaced = pathname.replace(/view-photo/([A-Z0-9]+)/g, '');
于 2013-10-08T12:58:22.850 回答
1

我会建议另一种方法(纯js)

var pathname = window.location.pathname;
var i  = pathname.slice(0,pathname.indexOf('/view-photo'));
于 2013-10-09T00:16:49.707 回答
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);

});

小提琴

于 2013-10-08T12:58:35.650 回答