Javascript 替换url中基于位置的GET参数(正则表达式)

Javascript 替换url中基于位置的GET参数(正则表达式),javascript,regex,Javascript,Regex,我想删除url的GET参数 url的格式如下: https://url.com?remove_parameter={VALUE} https://url.com?keep_parameter={VALUE}&remove_参数={VALUE} 我在寻找什么: https://url.com https://url.com?keep_parameter={VALUE} 我寻找正则表达式,但找不到正确的答案 有没有办法在javascript的replace函数中使用正则表达式来格式化这些url?也许

我想删除url的GET参数

url的格式如下:

https://url.com?remove_parameter={VALUE}

https://url.com?keep_parameter={VALUE}&remove_参数={VALUE}

我在寻找什么:

https://url.com

https://url.com?keep_parameter={VALUE}

我寻找正则表达式,但找不到正确的答案

有没有办法在javascript的replace函数中使用正则表达式来格式化这些url?

也许

[&?]remove_parameter={[^}]*}
用空字符串替换将在这里正常工作

const regex=/[&?]remove_参数={[^}]*}/gm;
常量str=`https://url.com?remove_parameter={VALUE}
https://url.com?keep_parameter={VALUE}&remove_参数={VALUE}
http://url.com?remove_parameter={VALUE}
https://www.url.com?keep_parameter={VALUE}&remove_参数={VALUE}`;
常量subst=`;
const result=str.replace(regex,subst);

控制台日志(结果)您可以安全地执行此操作,而无需使用正则表达式

var url=新url(“https://url.com?keep_parameter={VALUE}&remove_参数={VALUE}”);
console.log(url.origin);
console.log(“删除前:”);
forEach(函数(值,键){console.log(键,值);});
url.searchParams.delete('remove_参数');
console.log(“删除后:”);
forEach(函数(值,键){console.log(键,值);});
日志(“重建:”);

log(url.toString())
对于第二条注释,
?keep_parameter={VALUE}
是一个GET参数,但它仍然包含在其中。这是有意的,还是也应该删除?应该保留它。您是否只希望删除最后一个GET参数,即url中的最后一个,保留其余参数?我希望删除一个特定参数,例如&click_id={VALUE},它不一定在最后出现。我可以使用replace(“?click_id={VALUE},”),但这只包括click_id参数第一次出现时的情况,我正在寻找一个可以同时覆盖这两种情况的正则表达式,使用“?”和“&”可能您应该使用URL解析器而不是正则表达式。不完全是:with
https://url.com?remove_parameter={VALUE}&keep_参数={VALUE}
您将以
https://url.com&keep_parameter={VALUE}
。您想要的是
而不是
&
。(由于有人认为最好在查询字符串中使用一个字符作为第一个分隔符,在随后的分隔符中使用另一个字符,因此此任务变得复杂。)