电子邮件验证正则表达式的java代码

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/25030857/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-10 23:28:22  来源:igfitidea点击:

java code for regex of email validation

javaregex

提问by sina pouya

I tried to simulate email validation without regular expression in java and wrote this code. I need help to improve efficiency of this code (or give me a better way to solve this issue please)

我尝试在java中模拟没有正则表达式的电子邮件验证并编写了这段代码。我需要帮助来提高此代码的效率(或者请给我一个更好的方法来解决这个问题)

regular expression: ^[(a-zA-Z-0-9-\\_\\+\\.)]+@[(a-z-A-z)]+\\.[(a-zA-z)]{2,3}$

正则表达式: ^[(a-zA-Z-0-9-\\_\\+\\.)]+@[(a-z-A-z)]+\\.[(a-zA-z)]{2,3}$

public static boolean isValidEmailAddress(String email) {

    boolean flag1 = false;
    boolean flag2=false;
    boolean flag3=false;
    int j=0;
    char[] emailChars = email.toCharArray();
    for (int i = 0; i < emailChars.length;) {
        char c = emailChars[i];
        if (Character.isLetterOrDigit(c)) {
                i++;
            if(flag1==true&&flag2==true){
                j++;
            }
        } else if (c == '@' && flag1==false&&flag2==false && flag3==false) {
            i++;
            flag1=true;
        } else if(c=='.' && flag1==true && flag2==false&&flag3==false){
            i++;
            flag2 = true;
        }
        if(j==2 || j==3){
            flag3=true;
        }
    }
    return flag1&&flag2&&flag3;

}

回答by sina pouya

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class EmailValidator {

    private Pattern pattern;
    private Matcher matcher;

    private static final String EMAIL_PATTERN = 
        "^[_A-Za-z0-9-\+]+(\.[_A-Za-z0-9-]+)*@"
        + "[A-Za-z0-9-]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$";

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

    /**
     * Validate hex with regular expression
     * 
     * @param hex
     *            hex for validation
     * @return true valid hex, false invalid hex
     */
    public boolean validate(final String hex) {

        matcher = pattern.matcher(hex);
        return matcher.matches();

    }
}

回答by AlexR

Real world email validation is not so primitive task and it was already solved many times. I'd suggest you not to re-invent the wheel but use Apache Commons EmailValidator.

现实世界的电子邮件验证不是那么原始的任务,它已经解决了很多次。我建议您不要重新发明轮子,而是使用 Apache Commons EmailValidator