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

Java中使用@Pattern注解验证URL时匹配多域名后缀的问题

解决javax.validation @Pattern验证长域名后缀URL失败的问题

问题根源

你当前的正则表达式中,域名后缀匹配段\\.[a-zA-Z0-9()]{1,6}存在两个核心问题:

  • 长度限制为1-6位,无法匹配.systems这类超过6位的顶级域名后缀
  • 包含了不合法的()字符,域名后缀仅允许字母、数字和连字符(-)

修改后的正则表达式

调整后缀匹配段为符合域名规范的格式,即可支持所有合法域名后缀:

@Pattern(message = "Must be a valid URL", regexp = "https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9-]{2,63}\\b([-a-zA-Z0-9()@:%_\\+.~#?&;//=]*)")

关键修改说明

  • 移除后缀匹配中的()字符,对齐域名后缀的合法字符规则
  • 将长度限制从{1,6}改为{2,63}:
    • 最低2位覆盖.co、.io这类短后缀
    • 最高63位符合ICANN规定的顶级域名最长长度限制
  • 添加连字符-,支持.co-op这类包含连字符的合法后缀

验证示例

修改后以下URL均可通过验证:

  • https://www.test.com
  • https://api-apps.testapp.systems/test-service/v1/test
  • https://example.co-op/path

内容的提问来源于stack exchange,提问作者H.beuhier

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 02:05:20