【问题标题】:Regexp to get the utm values正则表达式获取 utm 值
【发布时间】:2016-08-12 03:07:28
【问题描述】:

我希望使用正则表达式从 URL 中提取一些 utm 值。我的 URL 如下所示 -

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

有什么方法可以使用正则表达式来提取所有 utm 值,例如 utm_source、utm_medium、utm_capaign、utm_term、utm_content?

【问题讨论】:

  • 任何答案对您的问题有帮助吗?它可以帮助使用 SO 的其他人指出哪些答案有助于/解决了您的问题。

标签: regex postgresql amazon-redshift regex-lookarounds


【解决方案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>');

【讨论】:

    【解决方案2】:

    对于这种情况,您可以使用积极的回溯。模式看起来像这样:

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

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

    【讨论】:

      【解决方案3】:

      我正在做的是获取 = 和 & 符号之间的每个值。

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

      另一个根据utm_

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

      【讨论】:

        猜你喜欢
        • 2018-12-06
        • 2018-02-11
        • 1970-01-01
        • 1970-01-01
        • 2016-11-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多