我的电子邮件验证不起作用

My Email Validation is not working

这是我的工作屏幕截图:

当我尝试在电子邮件地址前加上 .(点)时,它仍然显示电子邮件发送成功:

正在输入我的验证码:

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();
    }
}

您可以使用 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;

验证通过后,您就可以发送想要的邮件了。 我不确定,但我希望它会有所帮助。

祝你有愉快的一天!

如果我没理解错的话,您的直接问题是验证以点开头的电子邮件;您需要以仅在第一个字符之后允许点的方式来制定条件。例如:

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>