您的位置:首页 > 大数据 > 人工智能

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: