我正在尝试使用js正则表达式来搜索URL中的参数,如果找到则替换它的值。 如果未找到该参数,则会将其添加到URL中。
以下是几个场景
http://www.domain.com/?paramZ=123456
https://www.domain.com/?param1=val1;param2=val2;param3=val3;paramZ=123456
http://www.domain.com/one/or/more?paramZ=123456;param1=val1;param2=val2;param3=val3
https://www.domain.com/one/or/more?param1=val1;paramZ=123456;param2=val2;param3=val3
http://www.domain.com/one/or/more?param1=val1;param2=val2;param3=val3
我的目标是执行以下操作:
我设法做了第一个:
搜索
/^(http[s]?:\/\/www\.domain)(.*)(paramZ\=[\d]+)(.*)$/g
替换为
$1$2paramZ=987654$4
这是一个工作示例: https://regex101.com/r/9Ui8vx/1
我不知道即使只有一个正则表达式可以实现这一点。
答案 0 :(得分:0)
/(^https?:\/\/[^?#]*\?)((?!paramZ=)\w*=\w*;?)*?((paramZ=\w*;?)?)/gm
(跳过任意数量的其他参数,选择所需的一个或全部)