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

Javascript 从url字符串中删除所有空值,javascript,jquery,regex,Javascript,Jquery,Regex,我正在尝试从url字符串中删除所有空参数。我的url看起来像这样 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 这是我正在使用的正则表达式(“/(&?\w+=((?=$)(?=&)))/g,”)我知道我可以在第一

我正在尝试从url字符串中删除所有空参数。我的url看起来像这样

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

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


这是我的

例如,你可以说:

var s = 'http://localhost/wm/frontend/www/?test=&lol=1&boo=2&r=';
s = s.replace(/\w*=\&/g, '');
s = s.replace(/&\w*=$/g, '');
也就是说,删除一块
字母
+
=
+
&
。然后,删除行末尾的字母(由
$
指示)

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

http://localhost/wm/frontend/www/?lol=1&boo=2
在或直接在此处查看:

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

document.write
您可以使用此正则表达式替换:

/[^?&=]+=(?:&|$)|&[^?&=]+=(?=&|$)/g
并替换为:

""
试一试

var url=”http://localhost/wm/frontend/www/?test=&lol=1&boo=2&j=";

document.write(url.replace(/\w+=&|&\w+=$/g,”)
只要尝试调用本机的“replace”,它可以在第一个参数中与正则表达式一起使用

str.replace(regex, replace_str)

请查看此小提琴以查看正在运行的示例:

这不会删除尾随
&x=
True,谢谢@AlexK。我刚刚更新了关于这个案例的内容。只是想知道,为什么您需要在客户端删除它,而不是在服务器端处理它?顺便说一句,这些URL首先是如何构建的?@A.Wolff,用于使用history.js进行过滤搜索
str.replace(regex, replace_str)