2013-06-25 58 views
0

我有一個問題,我似乎無法解決它。JavaScript正則表達式搜索,但不包括

我有一些URL是這樣的:

我只想\/filter=(\w+)(\/?)去除,所以只有filter=show但不包括下一個斜槓。另外filter只是一個變量。

我曾嘗試:

var url = 'http://www.example.com/test/filter=show/results=true'; 
var param = 'filter'; 
var oldParam = '\/('+param+'=(.*?))'; 
var reg = new RegExp(oldParam, "gi"); 
var result = url.replace(reg, "/"); 

這隻filter=刪除並離開了表演。 任何幫助,不勝感激。

+0

小心逃跑。使用構造函數_must_構建的正則表達式會被雙重轉義,因爲它位於字符串「\\ /'中。不知道這是否是整個解決方案,但問題出在那裏。 – elclanrs

+0

如果您只刪除'filter = show',您希望*雙斜槓?從「http:// www.example.com/test/filter = show/results = true''到:''http:// www.example.com/test // results = true''? –

+0

@DavidThomas,啊,不,我希望有'http:// www.example.com/test/results = true',或'http:// www.example.com/test',取決於參數是組。謝謝 – user1642439

回答

2

嘗試

var url = 'http://www.example.com/test/filter=show/results=true'; 
var result = url.replace(/filter=([^&\/]*[/]?)/gi, ""); 
alert(result); 

========== =======更新================ ==

var url = 'http://www.example.com/test/filter=show/results=true'; 
var params = 'filter'; 
    params = params+'=([^&\/]*[/]?)' 
var reg = new RegExp(params, "gi"); 
var result = url.replace(reg, ""); 
alert(result); 
+0

謝謝,但在這種情況下如何使過濾器成爲一個變量?如果我想刪除'results = true',我無法爲每個變量創建函數? – user1642439

+0

我更新了make ** filter **作爲變量,如果你想刪除** results = true **,你只能改變** var params ='filter'; ** to ** var params ='results'; * * –

+0

謝謝:D,本作品 – user1642439

2

儘量向前看,像

'http://www.example.com/test/filter=show/results=true'.replace(/\/filter=.*?(?=\/)/, '') 

例:

var url = 'http://www.example.com/test/filter=show/results=true'; 
var param = 'filter'; 
var oldParam = '\\/'+param+'=.*?(?=\\/)'; 
console.log(oldParam) 
var reg = new RegExp(oldParam, "gi"); 
var result = url.replace(reg, ""); 
console.log(result) 

演示:Fiddle

+0

謝謝,但是在這種情況下如何讓'filter'成爲一個變量?如果我想刪除'results = true',我無法爲每個變量創建函數? – user1642439

+0

使用'http:// www.example.com/test/filter = show'它不起作用。 – user1642439

1

這應該滿足您的需求:

var url = "http://www.example.com/test/filter=show/results=true"; 
var param = "filter"; 
var pattern = "/" + param + "=[^/]+"; 
var regex = new RegExp(pattern, "gi"); 
var result = url.replace(regex, ""); 

document.write(result); 

打印:

http://www.example.com/test/results=true 

說明:

/filter=[^/]+ 

Regular expression image

Edit live on Debuggex

+0

非常感謝。 – user1642439