用正则表达式删除url param

时间:2016-04-03 19:49:31

标签: javascript regex url replace

给定一个网址,我正在尝试删除特定的网址参数。

例如,如果我有:

http://example.com?foo=bar&baz=boo

我想摆脱foo=bar并留下:

http://example.com?baz=boo

或者如果我想删除baz=boo,我会留下:

http://example.com?foo=bar

我正在尝试使用正则表达式以及字符串的replace函数。

这就是我所拥有的:

// s is "foo"
new RegExp("([&?]+)" + s + "=.*&")

这不符合以下情况:

http://example.com?foo=bar

因为它与&不匹配,但我无法弄清楚如何制作正则表达式以处理这两种情况。

jsBin

3 个答案:

答案 0 :(得分:1)

([&?]+)foo=.*?(?:&|$)应该有用。

我改变了什么

  • .*?解决了贪婪问题。
  • (?:&|$)是一个非捕获组。它匹配&或匹配行尾(使用$)。

答案 1 :(得分:1)

str = str.replace(/(?:\?|&)(foo[^=]*=[^&]+)(?:&|$)/,'');

DEMO

答案 2 :(得分:1)

<强> Working fiddle

我认为你在寻找什么,使用小组来处理这两个案例&而没有它:

"([&?]+)" + s + "=(.*&|.*$)?"

修改: Update fiddle

如果您想在第一次出现?(如果存在)时停止,则可以添加&

"([&?]+)" + s + "=(.*?&|.*$)?"
_____________________^

希望这有帮助。