【问题标题】:.contains("@") not working for validating email format in Java [closed].contains("@") 不适用于验证 Java 中的电子邮件格式 [关闭]
【发布时间】:2015-10-10 08:41:40
【问题描述】:

我正在为学校编写一个程序,其中包含学生列表,包括他们的电子邮件地址。部分程序需要打印出无效的电子邮件地址。我一直在使用 .contains() 方法,但它似乎只能部分工作。

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

        }   
    }

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

John1989@gmail.com

Erickson_1990@gmailcom

The_lawyer99yahoo.com

Erin.black@comcast.net

它只打印 Erickson_1990@gmailcom 而不是 The_lawyer99yahoo.com。

知道这是为什么吗?

【问题讨论】:

  • 对我来说似乎可以正常工作(按照您列出的顺序,truefalsefalsetrue)。考虑提供一个runnable example 来证明您的问题。这不是代码转储,而是您正在做的事情的一个示例,它突出了您遇到的问题。这将导致更少的混乱和更好的响应
  • 其实只是想通了问题所在。该程序的另一部分是在进入电子邮件验证部分之前删除“The_lawyer99yahoo.com”。代码运行良好,但一开始并没有达到我的预期。

标签: java validation email format


【解决方案1】:

对我来说似乎工作正常。

您可以通过另一种方式使用此功能来验证电子邮件 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());

    }

如果电子邮件有效,此函数返回true,否则返回false

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-15
    • 2012-10-16
    • 2017-07-05
    • 2016-06-24
    • 2018-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多