Javascript Regex返回URL参数数组

Javascript Regex返回URL参数数组,javascript,regex,Javascript,Regex,我看到过许多关于匹配/替换路径的帖子,如: /login/:id/:name 然而,我试图弄清楚如何返回一个只包含参数名称的数组标识,名称 我把正则表达式放下了:/:[^\s/]+/g,“([\\w-]+)”只是在努力匹配。你需要循环,因为匹配不会在全局正则表达式中抓取捕获组,所以你会得到一些不需要的额外字符: var url = '/login/:id/:name'; var res = []; url.replace(/:(\w+)/g, function(_, match) { r

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

/login/:id/:name
然而,我试图弄清楚如何返回一个只包含参数名称的数组<代码>标识,
名称


我把正则表达式放下了:
/:[^\s/]+/g,“([\\w-]+)”
只是在努力匹配。

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

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"]

我可以拆分、循环和
substr
来检查模式,但我希望有更干净的东西。除非存在不可变拆分,否则似乎有效,例如:
/user/:id/login/:name
返回
id
,但第二个值是
未定义的