javascript - 正则表达式从链接中提取 id

标签 javascript regex

我需要从下面的链接中提取 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/

相关文章:

javascript - 在 typescript 中使用 Angular 传单指令的步骤

python - 如何使 re.findall 不区分大小写?

javascript - 如何在地址栏中设置cookie?

javascript - JS 中的嵌套函数

java - 在 Java 中匹配非空白

javascript - 如何验证 HTML 表单中至少 3 个单词?

javascript - XSD 正则表达式 : empty string OR something else

php - 正则表达式以匹配特定字符的确切出现次数

javascript - 为什么此代码在测试中有效,但在加载事件时却不起作用

javascript - 传递了一个函数作为 props 但它没有在 React 的子组件中执行