使用RegExp从URL中提取ID



我有这样的Url:/clients/18378/offers/2219/items/32779

我正在尝试获得一个包含以下内容的数组:18378221932779

我尝试过这个代码,但没有成功:

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

最新更新