Javascript正则表达式多重匹配

use*_*460 15 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
Run Code Online (Sandbox Code Playgroud)

ale*_*lex 26

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

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

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

jsFiddle.

品质将在qualities.

  • 我不得不建议在结束类中添加`$`,在开头类中添加`^\?`,以考虑查询字符串开头和结尾的`quality`:`/[^\? &;]?quality=([^&;$]+)/g` (2认同)