我没有找到这个问题的任何好的答案,所以我分享我的发现和工作
如果你想从一个 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_88ef12642ad61df c5239ba01bbbe5249
你会得到这个https://www.somewebsite.fr/produit/yi-camera-3600-noir-vr-33705370/offre-81085802?&&&awc=6901_1530705916_88ef12642ad61dfc5239ba01bbbe5249
此网址已经有效,但我们有一些欺骗和迹象 如果您从第一个请求中删除 $1,您将只使用 & 符号而不是 ?你应该在一开始就拥有
所以接下来清理我们保留第一个? sign => $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
最佳答案
我认为它可以像这样简单:
url = url.replace(/(?<=&|\?)utm_.*?(&|$)/igm, "");
你不需要转义&
(?<=&|\?)
= 正面回顾
.*?
= 一切,但“不贪心”
关于javascript - 使用正则表达式从 JavaScript 中的 URL 中删除 utm_* 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51187508/