Regexp获取utm值

时间:2016-08-12 03:07:28

标签: regex postgresql amazon-redshift regex-lookarounds

我希望使用regexp从URL中提取一些utm值。我的网址如下所示 -

utm_source=ko_1d5b57661294a3154&utm_medium=internetq&utm_campaign=-android5436af9f1aef91a654a7255038&utm_term=searchthis&utm_content=mainpage&

有没有办法让regexp提取所有的utm值,如utm_source,utm_medium,utm_capaign,utm_term,utm_content?

3 个答案:

答案 0 :(得分:1)

您可以抓取所有修补对,然后将其转换为对象。

注意 :对象转换过于简单(不会考虑同一个密钥的多个参数等)。



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>');
&#13;
&#13;
&#13;

答案 1 :(得分:0)

对于这种情况,你可以使用积极的外观。模式看起来像这样:

(?<=utm_[a-z]+=)\w+

此模式匹配以&#34; utm _ ??? =&#34;

之前的任何字母数字字符

答案 2 :(得分:0)

我在这里正在做的是获得=和&amp;之间的所有价值。登录。

/[^=]\w+(?=&)/g

另一个根据utm _

/[^utm_=]\w+(?=&)/g