Javascript正则表达式 - 如果存在则从url中删除变量

时间:2014-01-17 06:11:35

标签: javascript jquery regex query-string str-replace

我有这个网址:http://localhost/example/product/illimani/?lang=fr?lang=fr

现在我要删除此?lang=fr,因为这已经存在于网址中。

我希望你理解我的问题。

如果已经存在则删除?lang=fr否则不要。

3 个答案:

答案 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