首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >电子邮件地址的Java / Spring MVC 3验证

电子邮件地址的Java / Spring MVC 3验证
EN

Stack Overflow用户
提问于 2011-01-13 06:23:14
回答 4查看 75.6K关注 0票数 23

我有一个带有Spring MVC的Java后端,我正在以这种方式对域对象使用电子邮件地址的验证:

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
...
@NotNull
@Size(min = 1, max = 100)
@Pattern(regexp="^([a-zA-Z0-9\\-\\.\\_]+)'+'(\\@)([a-zA-Z0-9\\-\\.]+)'+'(\\.)([a-zA-Z]{2,4})$")
private String email;

但是我从这几行代码中得到的

Set<ConstraintViolation<Person>> failures = validator.validate(personObject);
...
Map<String, String> failureMessages = new HashMap<String, String>();
for (ConstraintViolation<Person> failure : failures) {
    failureMessages.put(failure.getPropertyPath().toString(), failure.getMessage());
    System.out.println(failure.getPropertyPath().toString()+" - "+failure.getMessage())
}

我在控制台上得到了这个:

email - must match "^([a-zA-Z0-9\\-\\.\\_]+)'+'(\\@)([a-zA-Z0-9\\-\\.]+)'+'(\\.)([a-zA-Z]{2,4})$"

但是我的电子邮件地址是test@test.com,所以regexp不匹配。

所以我有两个问题:

  • 这里怎么了?
  • 和我如何定义错误消息,因为向用户显示这不是一件好事:-)

提前感谢您的帮助和良好的问候。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-01-13 06:52:35

如果您使用Hibernate Validator,那么无论如何您都可以使用@Email annotation,您可以创建自定义约束注释,并设置要在资源属性文件中显示的自定义消息。

票数 45
EN

Stack Overflow用户

发布于 2011-01-13 06:42:40

首先尝试更简单的正则表达式,如下所示:

"\\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}\\b"

然后您可以尝试RFC 2822版本:

"(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])"

如果这两种方法对你有效,请告诉我。

也可以看看这个包

org.springmodules.validation.bean.conf.loader.annotation.handler

这里

http://www.springbyexample.org/examples/spring-modules-validation-module.html

这可能是更好的选择。

票数 9
EN

Stack Overflow用户

发布于 2011-09-27 01:33:03

您可以从Hibernate Validator使用@Email

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>5.4.1.Final</version>
    </dependency>
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4674682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档