休眠验证器:@Email接受ask @ codingdic为有效吗?

我正在使用@Email注释来验证电子邮件地址。我遇到的问题是它正在接受诸如`ask@stcodingdic有效的电子邮件地址之类的东西。我猜这是因为他们想支持Intranet地址,但是我似乎找不到标志,因此它会检查扩展名。

我是否真的需要切换到@Pattern(以及有关灵活的电子邮件模式的任何建议)还是缺少什​​么?

回答:

实际上,@Email从Hibernate Validator

内部使用regexp。您可以根据该正则表达式轻松定义自己的约束,并根据需要进行修改(请注意+的结尾DOMAIN):

@Target({ElementType.FIELD, ElementType.METHOD})

@Retention(RetentionPolicy.RUNTIME)

@Constraint(validatedBy = {})

@Pattern(regexp = Constants.PATTERN, flags = Pattern.Flag.CASE_INSENSITIVE)

public @interface EmailWithTld {

String message() default "Wrong email";

Class<?>[] groups() default { };

Class<? extends Payload>[] payload() default { };

}

interface Constants {

static final String ATOM = "[a-z0-9!#$%&'*+/=?^_`{|}~-]";

static final String DOMAIN = "(" + ATOM + "+(\\." + ATOM + "+)+";

static final String IP_DOMAIN = "\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\]";

static final String PATTERN =

"^" + ATOM + "+(\\." + ATOM + "+)*@"

+ DOMAIN

+ "|"

+ IP_DOMAIN

+ ")$";

}

以上是 休眠验证器:@Email接受ask @ codingdic为有效吗? 的全部内容, 来源链接: utcz.com/qa/400616.html

回到顶部