【问题标题】:RegEx to extract ids from links正则表达式从链接中提取 id
【发布时间】:2018-12-01 12:16:01
【问题描述】:

我需要从以下链接中提取 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 的正则表达式,但不知道如何将它们组合成一个。

这是第一种类型shipments\/(.*?)\/

这是针对第二种和第三种类型的链接: document-generation-service\/retrieve\/(.*?)\/

我可以将它们组合成一个适用于所有类型链接的正则表达式吗?

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    是的,您可以使用|(或)将它们组合起来:

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

    您的令牌 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

    【讨论】:

    • @rel1x 不用担心,很高兴为您提供帮助 :)
    猜你喜欢
    • 2013-08-28
    • 2011-05-31
    • 1970-01-01
    • 1970-01-01
    • 2010-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-24
    相关资源
    最近更新 更多