[英]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.