RegEx для извлечения идентификаторов из ссылок - PullRequest
0 голосов
/ 01 декабря 2018

Мне нужно извлечь идентификаторы из ссылок ниже:

shipments/8891cbf6-f3d4-4369-9ae0-fdb794a8b61d/documents/routingLabel
https://example1.com/service/document-generation-service/retrieve/J75pYky-5kAreVLVrmR2sYf-svE0abvqW8QDdQg44CFMUj6YtsxveeAQY8iJX_cgeb1OV4vFfZBohGSngpIb3Q/addressLabel
http://example2.com/service/document-generation-service/retrieve/J75pYky-5kAreVLVrmR2sYf-svE0abvqW8QDdQg44CFMUj6YtsxveeAQY8iJX_cgeb1OV4vFfZBohGSngpIb3Q/addressLabel

Это идентификаторы из ссылок выше:

8891cbf6-f3d4-4369-9ae0-fdb794a8b61d
J75pYky-5kAreVLVrmR2sYf-svE0abvqW8QDdQg44CFMUj6YtsxveeAQY8iJX_cgeb1OV4vFfZBohGSngpIb3Q
J75pYky-5kAreVLVrmR2sYf-svE0abvqW8QDdQg44CFMUj6YtsxveeAQY8iJX_cgeb1OV4vFfZBohGSngpIb3Q

Я написал 2 регулярных выражений, которые извлекают эти идентификаторы, но не знаюкак объединить их в один.

Это для первого типа shipments\/(.*?)\/.

Это для второго и третьего типа ссылок: document-generation-service\/retrieve\/(.*?)\/

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

1 Ответ

0 голосов
/ 01 декабря 2018

Да, вы можете объединить их, используя | (или):

(shipments|document-generation-service\/retrieve)\/(.*?)\/

Ваш идентификатор токена теперь будет в захваченной группе # 2

Смотрите результат для всех ссылок ниже:

const urls = [
    "shipments/8891cbf6-f3d4-4369-9ae0-fdb794a8b61d/documents/routingLabel",
    "https://example1.com/service/document-generation-service/retrieve/J75pYky-5kAreVLVrmR2sYf-svE0abvqW8QDdQg44CFMUj6YtsxveeAQY8iJX_cgeb1OV4vFfZBohGSngpIb3Q/addressLabel",
    "http://example2.com/service/document-generation-service/retrieve/J75pYky-5kAreVLVrmR2sYf-svE0abvqW8QDdQg44CFMUj6YtsxveeAQY8iJX_cgeb1OV4vFfZBohGSngpIb3Q/addressLabel"
],
ids = urls.map(url => url.match(/(shipments|document-generation-service\/retrieve)\/(.*?)\//)[2]);

console.log(ids); // List of id's retrieved from the above URLS
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...