关于正则表达式:Javascript正则表达式多重匹配

Javascript Regular Expression multiple match

本问题已经有最佳答案,请猛点这里访问。

我正在尝试使用javascript在具有查询字符串参数的URL(window.location.href)上执行正则表达式,但无法确定如何执行。在我的例子中,有一个查询字符串参数可以自己重复;例如"quality",所以这里我尝试匹配"quality="以获得一个具有4个值的数组(高、黑、绿、帅):

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


您可以使用regex来执行此操作。

1
2
3
4
5
6
7
var qualityRegex = /(?:^|[&;])quality=([^&;]+)/g,
    matches,
    qualities = [];

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

杰西德。

质量将在qualities中。


对于那些希望在URL中匹配非预定参数名的用户,@alex的答案有细微的变化。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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);

杰西德