You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Regex中使用lookahead和$提取URL中的无后缀资源名

问题解决说明

原正则失效原因

你当前使用的([^/]+)(?=\..*)正则以及直接加$不生效的原因如下:

  • 原正则的正向预查(?=\..*)没有范围限制,只要匹配位置后任意位置存在.就会触发匹配,因此URL中所有包含.的分段前缀都会被命中,比如域名部分的res-3、cloudinary等内容都会被错误匹配。
  • 直接在正则末尾加$不符合逻辑:$代表字符串结束位置,放在预查外部会要求你匹配到的非/字符串同时满足「后面紧跟.加任意字符」和「处于字符串末尾」两个互斥条件,自然无法匹配到结果。

正确正则写法

调整后的正则如下,可直接命中预期的5oonz9结果:
([^/]+)(?=\.[^/]*$)

正则逻辑说明:

  • [^/]+:匹配连续的非/字符,对应资源名主体部分
  • (?=\.[^/]*$):正向预查规则,要求匹配到的内容后续必须满足:一个. + 任意数量的非/字符 + 字符串末尾,确保只匹配URL最后一段路径的文件名前缀,不会命中路径中其他带.的分段。

可选简化写法

如果你不需要严格使用正向预查,也可以用更直观的捕获规则:
/([^/.]+)\.[^/.]+$
直接捕获最后一段路径中最后一个.之前的非/内容,输出结果和上述正则一致。

内容的提问来源于stack exchange,提问作者AndresSp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 16:30:02