我想为班级做一个基本项目,但我遇到了一个问题。在验证代码的时候,输入 "[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] 识别为有效的电子邮件。代码格式不正确,缩进不正确。请确保你的代码与每一组新的大括号(表示范围)正确缩进。
试试下面的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)$";