Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中正则表达式电子邮件验证的问题_Java_Regex_Validation_Java.util.scanner_Email Validation - Fatal编程技术网

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

Java中正则表达式电子邮件验证的问题,java,regex,validation,java.util.scanner,email-validation,Java,Regex,Validation,Java.util.scanner,Email Validation,我正试图为课堂做一个基本的项目,但我遇到了一个问题。验证代码时,它在以下情况下工作:test@test.com输入。但是,当进一步测试和输入时test@test.com.com如果输入,它仍然返回有效。代码如下: 它的功能就像它应该的那样,减去知道标记test@test.com.com或任何其他类似的电子邮件格式无效。建议将不胜感激 编辑:我将添加说明和收到的反馈 说明:电子邮件地址包含@字符。编写一个程序,接收用户输入的电子邮件地址,并确定该地址是否有效。这是基于@字符的存在和字符串中没有空格

我正试图为课堂做一个基本的项目,但我遇到了一个问题。验证代码时,它在以下情况下工作:test@test.com输入。但是,当进一步测试和输入时test@test.com.com如果输入,它仍然返回有效。代码如下:

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

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

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

示例- 输入: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)$";


但这可能是一个有效的域名。好的,com.com可能不是它自己,但是你可以有子域,所以email@subdomain.maindomain.tld是一个有效的构造。这是否回答了您的问题@是的。我认为这不是一个很好的任务。特别是因为它故意误导人们,让他们知道什么是有效的,什么是无效的。我同意弗拉兹的观点。上述地址有效。您应该定义基于正则表达式的验证的目的。在我看来,电子邮件地址验证不应该比\S+@\S+更复杂。这只会给出用户混淆输入字段的反馈。如果用户不想给出他的电子邮件地址,他会给出test@example.com或者更糟:最后是一个随机地址。这就是为什么人们通常必须证明他们可以收到发送到给定地址的电子邮件。@ccalex如果需要的话,询问你的教授john@example.co.uk是有效的电子邮件地址,这也将允许email@domain.com.comThat与rfc不匹配,但是它确实与教授错误地称之为无效电子邮件地址的内容相匹配。我不知道这怎么会不匹配test@test.com.com. 测试匹配[a-zA-Z0-9!$%&'*+/=?`{124;}^.-]+.@匹配@。test.com.com与[a-zA-Z0-9.-]+完全匹配。所以:与问题中提供的regexp相同的问题。我尝试了regex,但它仍然不能消除email@domain.com.com当它注定无效时,它仍然返回为有效。现在它将不匹配test@abc.net任何一个
String email_regex = "^(([\\w-]+\\.)+[\\w-]+|([a-zA-Z]{1}|[\\w-]{2,}))@"
                + "[A-Za-z0-9-]+(\\.com|abc\\.co|abc\\.nz|abc\\.org|abc\\.net)$";