javascript - 使用正则表达式从 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
解决方案
我认为它可以很简单:
url = url.replace(/(?<=&|\?)utm_.*?(&|$)/igm, "");
你不需要逃跑&
(?<=&|\?)
= 积极的回顾
.*?
=一切,但“不贪婪”
推荐阅读
- javascript - Javascript 检查数组中的重复对象并将值合并到数组中
- android - 程序类型已存在:com.google.android.gms.common.util.VisibleForTesting -':app:transformDexArchiveWithExternalLibsDexMergerForDebug'
- c# - 如何在 Linq 中编写嵌套的 Sql 查询
- java - 组合多个加密密钥以生成加密密钥
- sql - 查询以列而不是行返回记录值?
- iis - IIS 中的 URL 重写添加字符
- three.js - 三.Object3D:.eulerOrder 现在是 .rotation.order
- r - 使用 roxygen2 在 R 中构建包时未创建文档
- acumatica - CSVReader 正在跳过第一行
- python - 将多个文件随机从目录移动到目录