【问题标题】:Regex to match image id from url正则表达式匹配来自 url 的图像 id
【发布时间】:2020-09-12 21:49:09
【问题描述】:

我的网址如下:

https://res.cloudinary.com/frivillighet-norge/image/upload/v1501681528/5648f10ae4b09f27e34dd22a.jpg

我只想匹配字符串末尾的图片id,不包括.jpg。到目前为止,我已经写了类似的东西:^[A-Za-z0-9]{24}$ 匹配长度为 24 的数字和字母字符串,因为我在字符串中的 id 始终长度为 24,但这不起作用,因为它匹配长度为 24 的字符串仅限。

任何帮助将不胜感激。

【问题讨论】:

  • 您只想注入 URL 的最后一部分吗?另外,是否有任何具体原因为此使用正则表达式?
  • 尝试使用捕获组https?:\/\/\S+\/([A-Za-z0-9]{24})\.\w+$regex101.com/r/R8V7iS/1
  • 其实我只需要从url中提取id即可。
  • @DonaldShahini id 在捕获组中。见ideone.com/ZlcGH5

标签: javascript regex url


【解决方案1】:
[A-Za-z0-9]{24}(?=(\.jpg))

"(?=(.jpg))" 是lookaround。它以 .jpg 结尾,但不包含它。

【讨论】:

  • 我接受这是正确的答案,但更好的解决方案似乎是@Thefourthbird 建议的https?:\/\/\S+\/([A-Za-z0-9]{24})\.\w+$
【解决方案2】:

您可以通过匹配协议,然后匹配出现 1 次以上的非空白字符 \S+,使模式更加具体。

然后匹配最后一次出现的/ 并捕获由 24 个字符组成的 id ([A-Za-z0-9]{24}) 后跟匹配一个点和 2 次或更多次的字符 a-z \.[a-z]{2,}

如果你想匹配整个字符串,你可以添加锚来断言字符串的开始^和结束$

id 在捕获组 1 中。

^https?:\/\/\S+\/([A-Za-z0-9]{24})\.[a-z]{2,}$

Regex demo

const regex = /https?:\/\/\S+\/([A-Za-z0-9]{24})\.\w+$/;
const str = `https://res.cloudinary.com/frivillighet-norge/image/upload/v1501681528/5648f10ae4b09f27e34dd22a.jpg`;

console.log(str.match(regex)[1])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多