получить имена всех вторичных маршрутов в URL в угловых - PullRequest
0 голосов
/ 31 октября 2018

URL-адрес следующий

http://localhost:4100/example/5b8c94cfc5f85728db8bddf2/5b8c94d0c5f85728db8bddf3/(p1:.....//p2:....//p3 ....),

Мне нужно получить p1, p2, p3 от любого компонента, в данном случае.

Я пытался собрать регулярное выражение, но в консоли js мне это не удалось, однако в https://regexr.com/ оно работает правильно.

Я получаю URL класса Router

let url = this.router.url;
let partial = this.router.url.split ('(') [1]

let regex = /(\w)*:/g
let outlets = regex.exec(partial)
console.log(outlets) // you do not get all the matches

Мне нужно получить все имена вторичных выходов из любого компонента, я так подумал, у меня проблемы с регулярным выражением.

Если бы был другой способ получить то, что я хочу, это было бы очень полезно.

1 Ответ

0 голосов
/ 31 октября 2018

Я бы порекомендовал использовать положительный взгляд за символом ( с /(?<=\().+/:

Это можно увидеть в следующих случаях:

const url = "http://localhost:4100/example/5b8c94cfc5f85728db8bddf2/5b8c94d0c5f85728db8bddf3/(p1:.....//p2:....//p3";
const regex = /(?<=\().+/;

console.log(url.match(regex)[0]);

Или, если вы хотите захватить все три группы по отдельности, вы можете использовать
/(?<=\()(.+(?=\/\/))\/\/(.+(?=\/\/))\/\/(.+)/

const url = "http://localhost:4100/example/5b8c94cfc5f85728db8bddf2/5b8c94d0c5f85728db8bddf3/(p1:.....//p2:....//p3";
const regex = /(?<=\()(.+(?=\/\/))\/\/(.+(?=\/\/))\/\/(.+)/;

console.log(url.match(regex));

Это выглядит сложно, но, по сути, делает то же самое, просто с добавлением предвкушения на // и повторением этого критерия три раза.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...