我希望使用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?
答案 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;
答案 1 :(得分:0)
对于这种情况,你可以使用积极的外观。模式看起来像这样:
(?<=utm_[a-z]+=)\w+
此模式匹配以&#34; utm _ ??? =&#34;
之前的任何字母数字字符答案 2 :(得分:0)
我在这里正在做的是获得=和&amp;之间的所有价值。登录。
/[^=]\w+(?=&)/g
另一个根据utm _
/[^utm_=]\w+(?=&)/g