【发布时间】:2018-12-13 17:04:59
【问题描述】:
我没有找到这个问题的任何好的答案,所以我分享我的发现和工作
如果您想从 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
这个网址已经有效,但我们有一些欺骗和迹象 如果您从第一个请求中删除 $1,您将只使用 & 符号而不是 ?你一开始就应该拥有的
所以接下来清理我们保留第一个?符号 => $1 并删除其他前导 &
url = url.replace(/(\?)\&+/igm, "$1");
这里我们有一个漂亮干净的网址
完整版:
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
【问题讨论】:
-
正确的 url 是什么?
-
好点我已经编辑了我的问题
-
如果查询字符串仅包含
utm参数,@benraay/(?<=&|\?)utm_.*?(&|$)/igm不会删除结尾的?。它也不能跨不支持 ECMAScript 2018 标准的 JS 环境移植。
标签: javascript node.js regex url clean-urls