Email 验证

来源:互联网 发布:php tp框架分页 编辑:程序博客网 时间:2024/05/28 01:35

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})@Documentedpublic @interface Email {    String message() default "{invalid.email}";    Class<?>[] groups() default {};    Class<? extends Payload>[] payload() default {};        EmailSeparator separator() default EmailSeparator.SEMICOLON;}


0 0
原创粉丝点击