我的电子邮件验证无效

时间:2017-08-21 11:11:17

标签: java regex email-validation

这是我的工作屏幕截图:

当我试图将。(点)放在电子邮件地址前面时,它仍然显示电子邮件发送成功:

我放了验证码:

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

public class Validation {   

    public static boolean isValidEmail(String email)
    {
    String ePattern = "^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$";
    Pattern p = java.util.regex.Pattern.compile(ePattern);
    Matcher m = p.matcher(email);
    return m.matches();
    }
}

2 个答案:

答案 0 :(得分:1)

如果我理解正确,那么您的直接问题是以点开头的电子邮件已经过验证;你需要以一种只在第一个字符之后允许一个点的方式来表达条件。例如:

String ePattern = "^[\\w-_]+[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$";

更好的方法可能是使用Apache Commons EmailValidator:

EmailValidator ev = EmailValidator.getInstance();
return ev.isValid(email);

这里是maven依赖:

<dependency>
    <groupId>commons-validator</groupId>
    <artifactId>commons-validator</artifactId>
    <version>1.4.0</version>
</dependency>

答案 1 :(得分:0)

您可以使用JAVA EE 7 API库进行电子邮件检查。借助上面的代码块,您的程序可以验证电子邮件地址输入。

public boolean isValidEmailAddress(String email) 
{
    boolean result = true;
    try 
    {
       InternetAddress emailAddr = new InternetAddress(email);
       emailAddr.validate();
    } 
    catch (AddressException ex) 
    {
       result = false;
    }
    return result;
}  

不要忘记导入这些:

import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;

验证完成后,您可以发送所需的邮件。 我不确定,但我希望它会有所帮助。

度过美好的一天!