javascript - 使用正则表达式从 JavaScript 中的 URL 中删除 utm_* 参数

标签 javascript node.js regex url clean-urls

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

如果你想从一个 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/

相关文章:

javascript - 如何将事件类设置为菜单项(sessionStorage)

node.js - Swagger 生成器无法识别 Controller

javascript - 从 Node 应用程序将全局对象写入文件

javascript - 如何告诉 Passport JS 中的 typescript req.user 永远不会被定义?

javascript - 角色替换

java - 仅在第一个匹配的正则表达式位置拆分字符串

javascript - 循环不会累加表单值的总和

javascript - 使用 html2canvas 设置 Png 的质量

c# - 如何在 C# 中选择所有内容,包括敏感大小写(正则表达式)?

javascript - 带有三个参数的 jQuery 的 $.each 有什么作用,以及如何将其转换为纯 JS?