2015-07-21 54 views
2

我正在输入一个包含学生列表的学校的程序,其中包括他们的电子邮件地址。部分程序需要打印出无效的电子邮件地址。我一直使用.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()); 
     } 

     } 
    } 

当检查以下电子邮件地址:

[email protected]

Erickson_1990 @ gmailcom

The_lawyer99yahoo.com

[email protected]

它只打印Erickson_1990 @ gmailcom但n ot The_lawyer99yahoo.com。

任何想法为什么这是?

+2

似乎工作没关系,我(在你列出的顺序该函数返回true,'真','FALSE','假','true')。考虑提供一个[可运行的示例](https://stackoverflow.com/help/mcve),它可以证明你的问题。这不是代码转储,而是您正在做的事情的一个例子,它突出了您遇到的问题。这会导致更少的混淆和更好的回应 – MadProgrammer

+0

其实只是找出了问题所在。该计划的另一部分是在去电子邮件验证部分之前删除“The_lawyer99yahoo.com”。代码工作正常,正是我期待的不是在那里开始。 – Ian

回答

0

似乎为我工作好。

以另一种方式,您可以使用此功能验证电子邮件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