2013-10-08 44 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

相關問題