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

如何用Java的@Pattern校验数值是否大于18?报错问题求解

问题原因及解决方法

错误原因

@Pattern注解是专门用来校验字符串类型数据的,而你的age字段是Integer数值类型,所以校验框架找不到对应的校验器,才会抛出这个错误。

正确修改方案

方案1:使用专门的数值校验注解(推荐)

直接用@Min注解替代@Pattern,这是JSR-380规范中专门为数值类型设计的最小值校验注解,完全匹配你“数值大于18”的需求:

@Min(value = 19, message = "年龄必须大于18")
private Integer age;

注:设置value=19是因为要满足“大于18”,也就是最小允许值为19。

方案2:改用字符串类型配合正则(不推荐)

如果一定要用正则校验,需要把age字段改为String类型,同时修正正则里的转义符(原代码里的\d要写成\\d):

@Pattern(regexp = "18|19|[2-9][0-9]|\\d{3,}", message = "年龄必须大于18")
private String age;

这种方式需要额外处理字符串转数值的逻辑,不如方案1简洁高效,仅作特殊场景参考。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 17:46:08