我已經看到了一些關於匹配的職位/更換喜歡的路徑:正則表達式返回URL的參數數組
/login/:id/:name
不過,我想弄清楚如何我只能返回包含數組參數的名稱; id
,name
我得到了正則表達式:/:[^\s/]+/g, "([\\w-]+)"
只是在比賽中掙扎。
我已經看到了一些關於匹配的職位/更換喜歡的路徑:正則表達式返回URL的參數數組
/login/:id/:name
不過,我想弄清楚如何我只能返回包含數組參數的名稱; id
,name
我得到了正則表達式:/:[^\s/]+/g, "([\\w-]+)"
只是在比賽中掙扎。
你需要循環,因爲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"]
你需要正則表達式嗎? – iConnor
我可以分割,循環和'substr'來檢查模式,但我希望有更清潔的東西。 – Fluidbyte