给定一个网址,我正在尝试删除特定的网址参数。
例如,如果我有:
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
因为它与&
不匹配,但我无法弄清楚如何制作正则表达式以处理这两种情况。
答案 0 :(得分:1)
([&?]+)foo=.*?(?:&|$)
应该有用。
.*?
解决了贪婪问题。(?:&|$)
是一个非捕获组。它匹配&
或匹配行尾(使用$
)。答案 1 :(得分:1)
str = str.replace(/(?:\?|&)(foo[^=]*=[^&]+)(?:&|$)/,'');
答案 2 :(得分:1)
<强> Working fiddle 强>
我认为你在寻找什么,使用小组来处理这两个案例&
而没有它:
"([&?]+)" + s + "=(.*&|.*$)?"
修改: 的 Update fiddle 强>
如果您想在第一次出现?
(如果存在)时停止,则可以添加&
:
"([&?]+)" + s + "=(.*?&|.*$)?"
_____________________^
希望这有帮助。