Java 中的正则表达式电子邮件验证问题

Issues with Regex Email Validation in Java

我正在尝试为 class 做一个基本项目,但我 运行 遇到了问题。验证代码时,输​​入 "test@test.com" 时有效。但是,当进一步测试并说输入 "test@test.com.com" 时,它仍然 returns 有效。这是代码:

  System.out.println("Enter a valid email address: ");
  Scanner scan = new Scanner(System.in);
  emailAddress = scan.next();
  String email_regex = "^[_A-Za-z0-9-\+]+(\.[_A-Za-z0-9-]+)*@"
    + "[A-Za-z0-9-]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$";
  testString = emailAddress;
  b = testString.matches(email_regex);

  if (b) 
  {
    System.out.println("The email address \"" + emailAddress + "\" is valid.");
  }
  else 
  {
    System.out.println("The email address \"" + emailAddress + "\" IS NOT valid.");
  }
} while (!b);

它的功能就像它应该的那样,减去知道将 "test@test.com.com" 或任何其他类似的电子邮件格式标记为无效。建议将不胜感激!

编辑: 我将添加我收到的说明和反馈。

说明:电子邮件地址包含@字符。编写一个程序,要求用户输入电子邮件地址并确定它是否是有效地址。这是基于 @ 字符的存在且字符串中没有空格。您无需担心输入单词中的任何其他字符。输出结果 "The word IS an email address" 或 "The word IS NOT an email address"

示例 - 输入:testuser@mydomain.com 输出:这个词是一个电子邮件地址

输入:my123user 输出:这个词不是电子邮件地址

我的反馈:

程序错误地将 test@test.com.com 识别为有效电子邮件。 代码格式不正确,缩进不正确。请确保您的代码使用每组新的大括号(表示范围)正确缩进。

试试下面的正则表达式,它对我有用

String email_regex = "^(([\w-]+\.)+[\w-]+|([a-zA-Z]{1}|[\w-]{2,}))@"
                + "[A-Za-z0-9-]+(\.com|abc\.co|abc\.nz|abc\.org|abc\.net)$";