我想/view-photo/P1270649
从我拥有的 URL 中删除。我目前正在使用它来这样做:
var pathname = window.location.pathname;
var replaced = pathname.replace('/view-photo/' + /([A-Z0-9]+)/g, '');
但是,当我尝试使用它时没有任何反应。您可以在 JSFiddle 上看到它的实际效果。我该如何解决这个问题?
我想/view-photo/P1270649
从我拥有的 URL 中删除。我目前正在使用它来这样做:
var pathname = window.location.pathname;
var replaced = pathname.replace('/view-photo/' + /([A-Z0-9]+)/g, '');
但是,当我尝试使用它时没有任何反应。您可以在 JSFiddle 上看到它的实际效果。我该如何解决这个问题?
您不能以这种方式组合字符串和正则表达式。最简单的做法是将其完全放在正则表达式中:
var replaced = pathname.replace(/\/view-photo\/([A-Z0-9]+)/g, '');
最初发生的事情是正则表达式对象被转换为字符串,这实际上会使您replace()
看起来像这样:
var replaced = pathname.replace("/view-photo//([A-Z0-9]+)/g", '');
...这将搜索该字符串的文字版本,当然不存在。
' 字符在构建正则表达式时失败:
var replaced = pathname.replace('/view-photo/' + /([A-Z0-9]+)/g, '');
应该
var replaced = pathname.replace(/view-photo/([A-Z0-9]+)/g, '');
我会建议另一种方法(纯js)
var pathname = window.location.pathname;
var i = pathname.slice(0,pathname.indexOf('/view-photo'));
尝试这个,
$(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);
});