从url字符串中删除所有空值

时间:2014-12-15 15:27:53

标签: javascript jquery regex

我试图从网址字符串中删除所有空的参数。我的网址看起来像这样

http://localhost/wm/frontend/www/?test=&lol=1&boo=2

我的代码应该返回

http://localhost/wm/frontend/www/?lol=1&boo=2

但它不会返回

http://localhost/wm/frontend/www/?&lol=1&boo=2

这是使用replace("/(&?\w+=((?=$)|(?=&)))/g","")的正则表达式我知道我可以使用匹配'?&'的replace()字符串。在第一次替换之后,但我宁愿编辑我的正则表达式,所以它在一行代码中。有什么想法吗?

这是我的jsfiddle

4 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式进行替换:

/[^?&=]+=(?:&|$)|&[^?&=]+=(?=&|$)/g

并将其替换为:

""

RegEx Demo

答案 1 :(得分:0)

例如,您可以说:

var s = 'http://localhost/wm/frontend/www/?test=&lol=1&boo=2&r=';
s = s.replace(/\w*=\&/g, '');
s = s.replace(/&\w*=$/g, '');

也就是说,移除letters + = + &的阻止。然后,删除该行末尾的& + letters + =(由$表示)。

对于您的输入,它会返回:

http://localhost/wm/frontend/www/?lol=1&boo=2

JSFiddle或直接在此处查看:

var s = 'http://localhost/wm/frontend/www/?test=&lol=1&boo=2&r=';
s = s.replace(/\w*=\&/g, '');
s = s.replace(/&\w*=$/g, '');
document.write(s)

测试

如果输入包含中间和结尾的块:

http://localhost/wm/frontend/www/?test=&lol=1&boo=2&r=

我上面写的代码返回:

http://localhost/wm/frontend/www/?lol=1&boo=2

答案 2 :(得分:0)

尝试

/\w+=&|&\w+=$/g,

var url = "http://localhost/wm/frontend/www/?test=&lol=1&boo=2&j=";
document.write(url.replace(/\w+=&|&\w+=$/g, ""))

答案 3 :(得分:0)

尝试调用native的'replace',它可以在第一个参数中与正则表达式一起使用。

str.replace(regex, replace_str)

请看这个小提琴看一个正在运行的例子:http://jsfiddle.net/xvqasgmu/1/