2016-08-12 192 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