正则表达式返回URL参数数组

时间:2014-02-23 23:42:30

标签: javascript regex

我看过很多关于匹配/替换路径的帖子,如:

/login/:id/:name

但是,我试图弄清楚如何返回一个只包含params名称的数组; idname

我让Regex失望了:/:[^\s/]+/g, "([\\w-]+)"只是在比赛中挣扎。

1 个答案:

答案 0 :(得分:1)

你需要循环,因为match不会抓取全局正则表达式中的捕获组,所以你最终会得到一些你不需要的额外字符:

var url = '/login/:id/:name';

var res = [];
url.replace(/:(\w+)/g, function(_, match) {
  res.push(match);
});

console.log(res); //=> ["id", "name"]

您也可以使用此助手:

String.prototype.gmatch = function(regex) {
  var result = [];
  this.replace(regex, function() {
    var matches = [].slice.call(arguments, 1, -2);
    result.push.apply(result, matches);
  });
  return result;
};

var res = url.gmatch(/:(\w+)/g); //=> ["id", "name"]