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

如何编写正则捕获符合year_max参数条件的URL域名?

原有正则的问题

  1. 分支逻辑错误:你写的(?:&year_max=2019|2020|2021|2022)?的实际匹配逻辑是「匹配&year_max=2019,或匹配单独的2020/2021/2022字符串」,没有把四个年份都绑定到year_max参数上。
  2. 贪婪匹配问题:.*会优先吞噬尽可能多的字符,导致后面的可选参数匹配逻辑完全失效,即使year_max是不合法年份也会被.*吞掉从而错误匹配成功。

修正后的正则

^(domain\.com)\/[^&]*(?:&(?!year_max=)[^&]*)*(?:&year_max=(?:2019|2020|2021|2022))?$

匹配逻辑说明

  • ^ 匹配字符串开头,避免部分内容匹配
  • (domain\.com) 捕获你需要的域名分组
  • \/[^&]* 匹配域名后的路径、首个参数前缀(不含&分隔符的部分)
  • (?:&(?!year_max=)[^&]*)* 匹配所有非year_max开头的其他参数,确保所有前置参数都被正确跳过
  • (?:&year_max=(?:2019|2020|2021|2022))? 可选匹配末尾的year_max参数,仅当值为指定四个年份时生效,符合你要求的「year_max如果存在就是最后一个匹配参数」的规则

测试验证

对给出的三个URL匹配结果如下:

  • domain.com/search.action?zip=94558&year_max=2020:匹配成功,捕获domain.com
  • domain.com/search.action?zip=94558&year_max=2017:匹配失败
  • domain.com/search.action?zip=94558:匹配成功,捕获domain.com

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 03:27:02