我需要从下面的链接中提取 id:
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
这些是来自上面链接的 ID:
8891cbf6-f3d4-4369-9ae0-fdb794a8b61d
J75pYky-5kAreVLVrmR2sYf-svE0abvqW8QDdQg44CFMUj6YtsxveeAQY8iJX_cgeb1OV4vFfZBohGSngpIb3Q
J75pYky-5kAreVLVrmR2sYf-svE0abvqW8QDdQg44CFMUj6YtsxveeAQY8iJX_cgeb1OV4vFfZBohGSngpIb3Q
我编写了 2 个正则表达式来提取这些 id,但不知道如何将它们组合成一个。
这是针对第一种类型发货\/(.*?)\/
。
这适用于第二种和第三种类型的链接:
文档生成服务\/检索\/(.*?)\/
我可以将它们组合成一个适用于所有类型链接的正则表达式吗?
最佳答案
是的,您可以使用 |
(或)组合它们:
(发货|文档生成服务\/检索)\/(.*?)\/
您的 token ID 现在将位于捕获的组 #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
关于javascript - 正则表达式从链接中提取 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53570660/