JSF 电子邮件验证 - 不允许接受 yahoo、gmail 等域

JSF Email Validation - Do not allow domains like yahoo, gmail, etc to be accepted

我已经有一个电子邮件验证器,可以正常工作,以正则表达式的形式检查电子邮件的格式。

现在 - 我想在 Java 中编写另一个电子邮件验证器(因为我的应用程序是在 JSF、Glassfish 3.x 上),不允许非政府电子邮件 在文本框中输入。不应接受雅虎、gmail、hotmail 等所有域。

它应该只接受基于印度政府域的电子邮件 - @gov.in@nic.in - 所有其他电子邮件都应该被拒绝,并且应该适当地通知用户。

请求这方面的帮助。提前致谢。

我根据规范制作电子邮件验证器:

EmailValidator.java

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("com.lucio.EmailValidator")
public class EmailValidator implements Validator {

    private static final String EMAIL_PATTERN = "^[_A-Za-z0-9-]+(\.[_A-Za-z0-9-]+)*@(gov|nic)(\.in)$";

    private Pattern pattern;
    private Matcher matcher;

    public EmailValidator(){
          pattern = Pattern.compile(EMAIL_PATTERN);
    }

    @Override
    public void validate(FacesContext context, UIComponent component,
            Object value) throws ValidatorException {

        matcher = pattern.matcher(value.toString());
        if(!matcher.matches()){

            FacesMessage msg = 
                new FacesMessage("E-mail validation failed.", 
                        "Invalid E-mail acepted only @gov.in or @nic.in");
            msg.setSeverity(FacesMessage.SEVERITY_ERROR);
            throw new ValidatorException(msg);

        }

    }
}

使用:

<h:inputText id="email" value="#{user.email}" 
    label="Email Address">

    <f:validator validatorId="com.lucio.EmailValidator" />

</h:inputText>