我试图从网址字符串中删除所有空的参数。我的网址看起来像这样
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
答案 0 :(得分:1)
答案 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/