Java中Regex电子邮件验证的问题

问题描述 投票:0回答:1

我想为班级做一个基本项目,但我遇到了一个问题。在验证代码的时候,输入 "[email protected] "的时候,可以正常工作。但是,当进一步测试并说输入 "[email protected] "时,它仍然返回有效。这是代码。

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

它的功能就像它应该的那样,但不知道把 "[email protected] "或其他类似的电子邮件格式标记为无效。请大家提出建议!

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

说明。一个电子邮件地址包含@字符 写一个程序,要求用户输入一个电子邮件地址,并判断它是否是一个有效的地址。这是基于@字符的存在和字符串中没有空格。你不需要担心输入字中的任何其他字符。输出结果 "该词是一个电子邮件地址 "或 "该词不是一个电子邮件地址"

例子 - 输入:[email protected]。这个词是一个电子邮件地址

输入:my123userOutput。这个词不是一个电子邮件地址

我的反馈。

程序错误地将[email protected] 识别为有效的电子邮件。代码格式不正确,缩进不正确。请确保你的代码与每一组新的大括号(表示范围)正确缩进。

java regex validation java.util.scanner email-validation
1个回答
-1
投票

试试下面的regex,就可以了

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

© www.soinside.com 2019 - 2024. All rights reserved.