1)www.mysite.site/product/brand?card_type=all
2)www.mysite.site/product/brand?card_type=all&cp=randomID&keyword=randomKeyword&network=randomNetwork&v3=sometype&v4=MM
因此我在Google Analytics(分析)上报告了以下两种类型的网址:
我基本上需要找到所有在“ card_type”的值之后带有“&”后跟(cp | keyword | v1 | v2 | v3 | v5)的链接,并将其替换为“ ppc-traffic”-因此理想情况下将:
我尝试过的事情:
搜索字符串 请求URI
^(https?:\/\/\S+\/[^?]*)(.*?)&(cp|keyword|v1|v2|v3|v5)
替换字符串:
/ppctraffic
(我也尝试过$1/ppctraffic
和$2/ppctraffic
)
在在线测试正则表达式时,它似乎可以正常工作,所以不确定我在做什么错。 任何帮助深表感谢
答案 0 :(得分:2)
一种方法是在/brand
上匹配而不是问号[^?]+
的组中捕获,然后再匹配?card_type=all&
,然后再匹配任意字符,直到字符串结尾。
由于您的链接不是以https://开头,因此可以将该部分设为可选的(?:https?:\/\/)?
。
^((?:https?:\/\/)?www\.[^?]+)\?card_type=all&(?:cp|keyword|v[1235]).*$
然后在替换中使用$1/ppctraffic
const pattern = /^((?:https?:\/\/)?www\.[^?]+)\?card_type=all&(?:cp|keyword|v[1235]).*$/;
[
"www.mysite.site/product/brand?card_type=all&cp=randomID&v1=randomIDv2=productName&v3=sometype&v4=MM&fbclid=randomID",
"www.mysite.site/product/brand?card_type=all",
"www.mysite.site/product/brand?card_type=all&aa=randomID&v1=randomIDv2=productName&v3=sometype&v4=MM&fbclid=randomID"
].forEach(s => console.log(s.replace(pattern, "$1/ppctraffic")));