gpt4 book ai didi

javascript - 用于删除部分 URL 参数的正则表达式

转载 作者:行者123 更新时间:2023-11-29 16:40:54 30 4
gpt4 key购买 nike

我正在尝试使用正则表达式删除网址中的特定参数。

//Here are the scenarios of what I want to remove in the url
'?pIds=123,2311' => ''
'?pIds=123,2311&deal=true' => '?deals=true'
'?pIds=123' => ''
'?pIds=123&deals=true' => '?deals=true'

'&pIds=123,2311' => ''
'&pIds=123,2311&deals=true' => '&deals=true'
'&pIds=123' => ''
'&pIds=123&deals=true' => '&deals=true'


const a = '?pIds=123,2311&deals=true';
a.replace(/&?pIds=\d+,?\d+/i, '');

是否可以为这些场景创建单个正则表达式?我怎样才能有条件地拥有?或 & 如果 pIds 分别是第一个或中间参数?

最佳答案

您可以在 Javascript 中使用此正则表达式进行搜索:

/[?&]pIds=[^&]*$|([?&])pIds=[^&]*&/

正则表达式分解:

  • [?&]pIds=[^&]*$:匹配 ?& 后跟 pIds=. $ 确保这是查询字符串中的唯一参数。
  • |:或
  • ([?&])pIds=[^&]*&:匹配 ?& 后跟 pIds= 后跟 &。这是查询字符串中多了一个参数的情况。

代码:

var arr=['?pIds=123,2311',
'?pIds=123,2311&deal=true',
'?pIds=123',
'?pIds=123&deals=true',
'&pIds=123,2311',
'&pIds=123,2311&deals=true',
'&pIds=123',
'&pIds=123&deals=true'];

var re = /[?&]pIds=[^&]*$|([?&])pIds=[^&]*&/;

for (i=0; i<arr.length; i++) {
console.log(arr[i], ' => ', arr[i].replace(re, '$1'));
}

RegEx Demo

关于javascript - 用于删除部分 URL 参数的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46005916/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com