我没有找到任何好的答案来回答这个问题,所以我分享一下我发现并且可行的方法
如果你想从一个URL中删除所有的Google Analytics术语,你大多数情况下希望保留其他参数,并最终得到一个干净有效的URL
url = url.replace(/(\&|\?)utm([_a-z0-9=+\-]+)/igm, "$1");
使用这样的url
https://www.somewebsite.fr/produit/yi-camera-3600-noir-vr-33705370/offre-81085802?utm_source=325483&utm_medium=affiliation&utm_content=catalogue-RDC&awc=6901_1530705916_88ef12642ad61dfc5239ba01bbbe5249
你会得到这个
https://www.somewebsite.fr/produit/yi-camera-3600-noir-vr-33705370/offre-81085802?&&&awc=6901_1530705916_88ef12642ad61dfc5239ba01bbbe5249
这个url已经是有效的,但我们有一些重复的 & 符号。如果你从第一个请求中删除$1,你将只得到一个 & 符号而不是应该在开头的?。因此,下一步的清理是保留第一个?符号 => $1 并删除其他前导 & 符号。
url = url.replace(/(\?)\&+/igm, "$1");
这里有一个干净漂亮的URL。
完整版本:
url = url.replace(/(\&|\?)utm([_a-z0-9=+\-]+)/igm, "$1");
url = url.replace(/(\?)\&+/igm, "$1");
如果你能找到一行代码,那就太好了。
编辑:生成的URL应该是这个:https://www.somewebsite.fr/produit/yi-camera-3600-noir-vr-33705370/offre-81085802?awc=6901_1530705916_88ef12642ad61dfc5239ba01bbbe5249。
/(?<=&|\?)utm_.*?(&|$)/igm
如果查询字符串只包含utm
参数,则不会删除尾部的?
。它也无法在不支持 ECMAScript 2018 标准的 JS 环境中移植。 - undefined