使用正则表达式删除网址参数

Remove url param with regex

本文关键字:参数 删除 正则表达式      更新时间:2023-12-08

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

例如,如果我有:

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

工作小提琴

我认为您正在寻找什么,使用组来处理&和没有它的两种情况:

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

编辑:更新小提琴

如果要在

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

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

希望这有帮助。

([&?]+)foo=.*?(?:&|$)应该可以工作。

我更改了什么

  • .*?修复了贪婪问题。
  • (?:&|$)是一个非捕获组。它要么匹配&,要么匹配行端(带 $ (。
str = str.replace(/(?:'?|&)(foo[^=]*=[^&]+)(?:&|$)/,'');

演示