首页 > 解决方案 > 使用正则表达式从 javascript 中的 URL 中删除 utm_* 参数

问题描述

我没有找到这个问题的任何好的答案,所以我分享了我的发现和工作

如果你想从一个 URL 中删除所有谷歌分析术语,你最想保留其他参数并在最后得到一个干净的有效 URL

url = url.replace(/(\&|\?)utm([_a-z0-9=+\-]+)/igm, "$1");

有这样的网址 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

标签: javascriptnode.jsregexurlclean-urls

解决方案


我认为它可以很简单: url = url.replace(/(?<=&|\?)utm_.*?(&|$)/igm, "");

你不需要逃跑&

(?<=&|\?)= 积极的回顾

.*?=一切,但“不贪婪”


推荐阅读