我有这样的Url:/clients/18378/offers/2219/items/32779
我正在尝试获得一个包含以下内容的数组:18378
、2219
、32779
我尝试过这个代码,但没有成功:
let currentUrl = this.router.url; // = '/clients/18378/offers/2219/items/32779'
var regexRouteOffer = //clients/(.*?)/offers/(.*?)/items/(.*?)/gm;
var match = currentUrl.match(regexArticleInOffer);
console.log("Test 1 >>", match); // => ["/clients/18378/offers/2219/items/"]
我试过使用exec
函数,但它只给我一个数字(仅第一个(
var matches = [];
for (var m = null; m = regexRouteOffer.exec(currentUrl); matches.push(m[1]));
console.log("Test 2 >> ", matches); //["18378"]
我做错了什么?
您不需要标志g
(因为您只想匹配一次(和m
(因为不需要打开多行模式(。最后,最后一个.*
是不自由的,所以它试图匹配尽可能少的元素(在这种情况下为零(,所以删除所有或至少最后一个?
。
let currentUrl = '/clients/18378/offers/2219/items/32779'
var regexRouteOffer = //clients/(.*)/offers/(.*)/items/(.*)/;
var match = currentUrl.match(regexRouteOffer);
console.log(match[1]); // 18378
console.log(match[2]); // 2219
console.log(match[3]); // 32779