package com.test.jsf.validator; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.faces.application.FacesMessage; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.validator.FacesValidator; import javax.faces.validator.Validator; import javax.faces.validator.ValidatorException; @FacesValidator(value="com.test.jsf.EmailValidator") public class EmailValidator implements Validator { private static final String emailRegexPattern = "^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$"; @Override public void validate(FacesContext arg0, UIComponent arg1, Object arg2) throws ValidatorException { String rawEmail = (String)arg2; Pattern p = Pattern.compile(emailRegexPattern, Pattern.CASE_INSENSITIVE); Matcher m = p.matcher(rawEmail); boolean validEmail = m.matches(); if (!validEmail) { FacesMessage msg = new FacesMessage("Invalid Email Address"); throw new ValidatorException(msg); } } }