我正在尝试使用javascript在具有查询字符串参数的url(window.location.href)上执行正则表达式,但无法弄清楚如何执行此操作。在我的例子中,有一个查询字符串参数可以重复自己;例如“质量”,所以在这里我试图匹配“quality =”以获得具有4个值的数组(高,黑,绿眼睛,帅气):
http://www.acme.com/default.html?id=27&quality=tall&quality=dark&quality=green eyes&quality=handsome
答案 0 :(得分:25)
您可以使用正则表达式执行此操作。
var qualityRegex = /(?:^|[&;])quality=([^&;]+)/g,
matches,
qualities = [];
while (matches = qualityRegex.exec(window.location.search)) {
qualities.push(decodeURIComponent(matches[1]));
}
质量将在qualities
。
答案 1 :(得分:-2)
对于那些希望能够在网址中匹配非预定参数名称的人,@alex的答案略有不同。
var getUrlValue = function(name, url) {
var valuesRegex = new RegExp('(?:^|[&;])' + name + '=([^&;]+)', 'g'),
matches,
values = [];
while (matches = valuesRegex.exec(url)) {
values.push(decodeURIComponent(matches[1]));
}
return values;
}
var url = 'http://www.somedomain.com?id=12&names=bill&names=bob&names=sally';
// ["bill", "bob", "sally"]
var results = getUrlValue('names', url);