我有这个网址:http://localhost/example/product/illimani/?lang=fr?lang=fr
现在我要删除此?lang=fr
,因为这已经存在于网址中。
我希望你理解我的问题。
如果已经存在则删除?lang=fr
否则不要。
答案 0 :(得分:1)
您可以使用:
url.replace(/(\?lang=fr)+/g, '?lang=fr')
用一个?lang=fr
替换多次出现的{{1}}。
答案 1 :(得分:0)
您可以使用类似
的内容 var re = /(\?[\w|=]*)+\1/;
var str = 'http://localhost/example/product/illimani/?lang=fr?lang=fr?lang=fr';
str.match(re);
应修剪re
以包含更通用格式的网址参数。这只会替换连续的重复项。如果你想找到重复副本,那么你应该使用编程语言恕我直言。然后,您可以使用特殊代码$1 backreference
替换它。
答案 2 :(得分:0)
如果您只想处理所描述的一个场景,可以进行简单的替换:
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