提问人:ccalex 提问时间:4/27/2020 最后编辑:ccalex 更新时间:4/27/2020 访问量:567
Java 中的正则表达式电子邮件验证问题
Issues with Regex Email Validation in Java
问:
我正在尝试为课堂做一个基本项目,但我遇到了一个问题。验证代码时,当输入“[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]”或任何其他类似的电子邮件格式标记为无效。建议将不胜感激!
编辑:我将添加我收到的说明和反馈。
说明:电子邮件地址包含 @ 字符。编写一个程序,要求用户输入电子邮件地址,并确定它是否是有效地址。这是基于 @ 字符的存在,并且字符串中没有空格。您无需担心输入字中的任何其他字符。输出结果“The word IS an email address”或“The word IS IS NOT an email address”
例- 输入:[email protected] 输出:单词 IS 电子邮件地址
输入:my123user 输出:单词 IS 不是电子邮件地址
我的反馈:
程序错误地将 [email protected] 识别为有效的电子邮件。 代码格式不正确,缩进不正确。请确保您的代码使用每组新的大括号(表示范围)正确缩进。
答:
-1赞
QuickSilver
4/27/2020
#1
试试下面的正则表达式,它对我有用
String email_regex = "^(([\\w-]+\\.)+[\\w-]+|([a-zA-Z]{1}|[\\w-]{2,}))@"
+ "[A-Za-z0-9-]+(\\.com|abc\\.co|abc\\.nz|abc\\.org|abc\\.net)$";
评论
0赞
VLAZ
4/27/2020
这也将允许[email protected]
0赞
JGNI
4/27/2020
这与 rfc 的不匹配,但它确实与教授错误地调用无效电子邮件地址的内容相匹配
0赞
Johannes H.
4/27/2020
我不明白这与“[email protected]”不匹配。 比赛。@ 匹配 @。 匹配刚刚好。所以:与问题中提供的正则表达式相同的问题。test
[a-zA-Z0-9_!#$%&'*+/=?``{|}~^.-]+
test.com.com
[a-zA-Z0-9.-]+
0赞
ccalex
4/27/2020
我尝试了正则表达式,但它仍然没有消除 [email protected] 当它本应为“无效”时,它仍然返回为“有效”。
1赞
Johannes H.
4/27/2020
现在它也不会匹配[email protected]
评论
com.com
[email protected]
\S+@\S+