2016-08-12 194 views
0

我正在寻找使用正则表达式从URL中提取一些utm值。我的URL看起来像下面 -正则表达式来获得utm值

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?

+0

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

回答

0

对于这种情况,您可以使用积极lookbehind。该模式将看起来像:

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

这种模式由被preceeded任何字母数字字符匹配“UTM _ ??? =”

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>');

0

我在这里我在做什么是越来越=和&符号之间的每一个值。

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

根据另外一家utm_

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