首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regexp来获取utm值。

Regexp来获取utm值。
EN

Stack Overflow用户
提问于 2016-08-12 11:07:28
回答 3查看 2.9K关注 0票数 1

我希望使用regexp从URL中提取一些utm值。我的URL看起来像下面这样-

代码语言:javascript
复制
utm_source=ko_1d5b57661294a3154&utm_medium=internetq&utm_campaign=-android5436af9f1aef91a654a7255038&utm_term=searchthis&utm_content=mainpage&

有没有办法让正则表达式提取所有的UMT值,比如utm_source,utm_medium,utm_capaign,utm_term,utm_content?

EN

回答 3

Stack Overflow用户

发布于 2016-08-12 11:37:18

您可以获取所有的补丁对,然后将其转换为对象。

备注__:对象转换过于简单(不考虑同一键的多个参数等)。

代码语言:javascript
复制
var regexp = /(?!&)utm_[^=]*=[^&]*(?=&)/g;

var query = 'utm_source=ko_1d5b57661294a3154&utm_medium=internetq&utm_campaign=-android5436af9f1aef91a654a7255038&utm_term=searchthis&utm_content=mainpage&';

var matches = query.match(regexp);
var values = matches.reduce(function(obj, param) {
  var keyVal = param.split('=');
  obj[keyVal[0]] = keyVal[1];
  return obj;
}, {});

document.write('<pre>' + JSON.stringify({
  matches: matches,
  values: values
}, null, 2) + '<pre>');

票数 2
EN

Stack Overflow用户

发布于 2016-08-12 11:21:50

对于这种情况,您可以使用正向回溯。模式将如下所示:

代码语言:javascript
复制
(?<=utm_[a-z]+=)\w+

此模式匹配前面以"utm_???=“开头的任何字母数字字符

票数 1
EN

Stack Overflow用户

发布于 2016-08-12 11:54:23

这就是我要做的就是获取=和&符号之间的每一个值。

代码语言:javascript
复制
/[^=]\w+(?=&)/g

另一个根据utm_的说法

代码语言:javascript
复制
/[^utm_=]\w+(?=&)/g
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38909222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档