2016-12-27 133 views
0

我有這樣的正則表達式:用正則表達式替換在Javascript

var a = window.location.href.replace(/((.*)[&|?])(sessionid(=[^&]*))([&|#](.*))/, '$1$5'); 

,從一個例子URL刪除會話ID是這樣的:

http://...&parent_location=Test&abc=123&sessionid=q26bh6bkm8g49aeopem2obdm87igrsfe&... 

結果將是:

http://...&parent_location=Test&abc=123&&... 

我的問題是,如果在那個替換我可以添加替換也爲parent_location

+0

什麼是您預期的輸出? – anubhava

+4

1.將URL /查詢字符串解析爲數組/對象。 2.根據需要操作數據。 3.重新格式化爲一個URL。 - 比regexen好得多。 – deceze

+0

此結果:http://...&& abc = 123 && ...我也不想刪除parent_location查詢字符串,將不勝感激也刪除&不需要 – Piero

回答

2

使用單個正則表達式與不必要的捕獲組刪除。

str.replace(/([&?])(?:sessionid|parent_location)=[^&#]*(?=[&#]|$)/m, '$1') 

DEMO

+0

不能使用灰標記http:// ...&parent_location = Test&abc = 123&sessionid = q26bh6bkm8g49aeopem2obdm87igrsfe#abc/abc should remain:http://...&abc=123#abc/abc – Piero

+0

只需在第一個字符類中添加'#'..即[&? #]' –

0

您可以在一行中添加幾個.replace方法。

var a = window.location.href 
    .replace(/((.*)[&|?])(sessionid(=[^&]*))([&|#](.*))/, '$1$5') 
    .replace(/*statement*/);