Javascript正则表达式多重匹配

时间:2011-10-31 12:58:10

标签: javascript regex

我正在尝试使用javascript在具有查询字符串参数的url(window.location.href)上执行正则表达式,但无法弄清楚如何执行此操作。在我的例子中,有一个查询字符串参数可以重复自己;例如“质量”,所以在这里我试图匹配“quality =”以获得具有4个值的数组(高,黑,绿眼睛,帅气):

http://www.acme.com/default.html?id=27&quality=tall&quality=dark&quality=green eyes&quality=handsome

2 个答案:

答案 0 :(得分:25)

您可以使用正则表达式执行此操作。

var qualityRegex = /(?:^|[&;])quality=([^&;]+)/g,
    matches,
    qualities = [];

while (matches = qualityRegex.exec(window.location.search)) {
    qualities.push(decodeURIComponent(matches[1]));   
}

jsFiddle

质量将在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);

jsFiddle