Email 验证
2015-08-02 16:03
531 查看
import java.util.ArrayList; import java.util.Collection; import java.util.StringTokenizer; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.validation.ConstraintValidator; import javax.validation.ConstraintValidatorContext; import com.aerohive.core.annotation.Email; public class EmailValidator implements ConstraintValidator<Email, String>{ private String separator; @Override public void initialize(Email constraintAnnotation) { switch (constraintAnnotation.separator()) { case SEMICOLON: default: this.separator = ";"; break; } } @Override public boolean isValid(String value, ConstraintValidatorContext context) { if(value == null) { return true; } Collection<String> invalidEmails = new ArrayList<> (); for (StringTokenizer token = new StringTokenizer(value.trim(), separator); token.hasMoreTokens();) { String email = token.nextToken(); if(!isValidEmailAddress(email)) { invalidEmails.add(email); } } if(!invalidEmails.isEmpty()) { context.buildConstraintViolationWithTemplate("Invalid emails: " + invalidEmails).addConstraintViolation(); return false; } return true; } private boolean isValidEmailAddress(String emailAddress) { Pattern p = Pattern.compile("\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*"); Matcher m = p.matcher(emailAddress); return m.matches(); } }
@Target({ ElementType.METHOD, ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) @Constraint(validatedBy = {EmailValidator.class}) @Documented public @interface Email { String message() default "{invalid.email}"; Class<?>[] groups() default {}; Class<? extends Payload>[] payload() default {}; EmailSeparator separator() default EmailSeparator.SEMICOLON; }
相关文章推荐
- http://blog.csdn.net/uranus_wm/article/details/9838847
- reGeorg+proxychains-ng组合试用
- reGeorg+proxychains-ng组合试用
- 【LeetCode】217 & 219 - Contains Duplicate & Contains Duplicate II
- LeetCode:Climbing Stairs(DP)
- MainWindow简介
- tftp服务器连接开发板下载内核提示:retry count exceeded; starting again
- RuntimeError: Broken toolchain: cannot link a simple C program
- ORA-02291: integrity constraint (SYSTEM.FK1170E5C5328E4352) violated 解决办法
- 机器学习(吴恩达授课)课堂笔记(1)- Intro
- mvn generate-sources failed: Invalid SDK: Platform/API level 15 not available
- 2015 Multi-University Training Contest 3 hdu 5325 Crazy Bobo
- HDU 5335 || Walk Out || 2015 Multi-University Training Contest 4 简单题
- 2015 Multi-University Training Contest 3 hdu 5317 RGCDQ
- 朴素贝叶斯分类算法(Naive Bayesian classification)
- hdu 5319 Painter
- HDU 3452 Bonsai(最小割)
- HDUOJ Train Problem I
- 如何减少浏览器repaint和reflow ?
- wait 和 sleep的区别