我正在使用@Email
注释来验证电子邮件地址.我遇到的问题是它接受像ask@stackoverflow
有效的电子邮件地址这样的东西.我想这是因为他们想要支持内部网地址,但我似乎找不到一个标志,所以它检查扩展.
我是否真的需要切换到@Pattern
(以及任何灵活的电子邮件模式的建议)或者我错过了什么?
我有一个带有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;
Run Code Online (Sandbox Code Playgroud)
但是我得到了这些代码
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())
}
Run Code Online (Sandbox Code Playgroud)
我在控制台上得到这个:
email - must match "^([a-zA-Z0-9\\-\\.\\_]+)'+'(\\@)([a-zA-Z0-9\\-\\.]+)'+'(\\.)([a-zA-Z]{2,4})$"
Run Code Online (Sandbox Code Playgroud)
但我有电子邮件地址test@test.com
,所以正则表达式不匹配.
所以我有两个问题:
提前感谢您的帮助和最诚挚的问候.