.contains(“@”)无法验证Java中的电子邮件格式
问题描述:
我正在输入一个包含学生列表的学校的程序,其中包括他们的电子邮件地址。部分程序需要打印出无效的电子邮件地址。我一直使用.contains()方法,但它似乎只是部分工作。.contains(“@”)无法验证Java中的电子邮件格式
public static void print_invalid_emails()
{
for(Student s : mStudents)
{
if(s.getEmailAddress().contains("@") && s.getEmailAddress().contains(".") && !s.getEmailAddress().contains(" "))
{
continue;
}
else
{
System.out.println(s.getEmailAddress());
}
}
}
当检查以下电子邮件地址:
Erickson_1990 @ gmailcom
The_lawyer99yahoo.com
它只打印Erickson_1990 @ gmailcom但n ot The_lawyer99yahoo.com。
任何想法为什么这是?
答
似乎为我工作好。
以另一种方式,您可以使用此功能验证电子邮件ID。 试试吧
public static boolean validateEmail(String email) {
String email_pattern
= "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@"
+ "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
Pattern pattern = Pattern.compile(email_pattern);
Matcher matcher = pattern.matcher(email);
return (matcher.matches());
}
如果电子邮件是有效的,否则返回false
似乎工作没关系,我(在你列出的顺序该函数返回
true
,'真','FALSE','假','true')。考虑提供一个[可运行的示例](https://*.com/help/mcve),它可以证明你的问题。这不是代码转储,而是您正在做的事情的一个例子,它突出了您遇到的问题。这会导致更少的混淆和更好的回应 – MadProgrammer其实只是找出了问题所在。该计划的另一部分是在去电子邮件验证部分之前删除“The_lawyer99yahoo.com”。代码工作正常,正是我期待的不是在那里开始。 – Ian