这是我的工作屏幕截图:
当我试图将。(点)放在电子邮件地址前面时,它仍然显示电子邮件发送成功:
我放了验证码:
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();
}
}
答案 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;
验证完成后,您可以发送所需的邮件。 我不确定,但我希望它会有所帮助。
度过美好的一天!