我希望使用regexp从URL中提取一些utm值。我的URL看起来像下面这样-
utm_source=ko_1d5b57661294a3154&utm_medium=internetq&utm_campaign=-android5436af9f1aef91a654a7255038&utm_term=searchthis&utm_content=mainpage&有没有办法让正则表达式提取所有的UMT值,比如utm_source,utm_medium,utm_capaign,utm_term,utm_content?
发布于 2016-08-12 11:37:18
您可以获取所有的补丁对,然后将其转换为对象。
备注__:对象转换过于简单(不考虑同一键的多个参数等)。
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>');
发布于 2016-08-12 11:21:50
对于这种情况,您可以使用正向回溯。模式将如下所示:
(?<=utm_[a-z]+=)\w+此模式匹配前面以"utm_???=“开头的任何字母数字字符
发布于 2016-08-12 11:54:23
这就是我要做的就是获取=和&符号之间的每一个值。
/[^=]\w+(?=&)/g另一个根据utm_的说法
/[^utm_=]\w+(?=&)/ghttps://stackoverflow.com/questions/38909222
复制相似问题