簡體   English   中英

Javascript正則表達式-從URL中刪除變量(如果存在)

[英]Javascript regex - remove variable from url if exist

我有這個網址: http://localhost/example/product/illimani/?lang=fr?lang=fr

現在,我要刪除此?lang=fr因為它已經存在於url中。

我希望你能理解我的問題。

如果已經存在,請刪除?lang=fr否則不這樣做。

您可以使用:

url.replace(/(\?lang=fr)+/g, '?lang=fr')

用一個來代替多次出現的?lang=fr

您可以使用類似

 var re = /(\?[\w|=]*)+\1/; 
var str = 'http://localhost/example/product/illimani/?lang=fr?lang=fr?lang=fr';

str.match(re);

應該修剪re以便以更通用的格式包含URL參數。 這只會替換連續的重復項。 如果要查找不連貫的重復項,則應使用編程語言恕我直言。 然后,您可以將其替換為特殊代碼$1 backreference

如果您只想處理您描述的一種情況,則可以執行簡單的替換:

var new_url = url.replace(/(\?lang=fr)+/g, '?lang=fr');

要處理所有重復的變量,請嘗試以下方法:

var new_url = url;
var temp = '';
while( temp != new_url) { // need this in case params are out of order
    temp = new_url;
    new_url = temp.replace(/([&?])([^=&?]+=[^=&?]+)(.*)\2/g, '$1$2$3');
}
new_url = new_url.replace(/[&?]+/g, '&').replace(/&+/, '?').replace(/&$/, '');

例如,這會將http://localhost/example/product/illimani/?foo=bar&lang=fr?foo=bar&lang=fr變成http://localhost/example/product/illimani/?foo=bar&lang=fr

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM