我在CodeEval上进行THIS练习。我已多次提交我的代码,但我每次似乎得到的最高分是95.该网站针对提交的代码运行了20个测试用例(电子邮件地址)。这意味着有一个特定的电子邮件,其中一个我的代码给出了错误的答案。以下是我检查有效电子邮件时的2个功能(它给了我最高分,95分)。每个人的不同之处在于我每次尝试不同的正则表达式时都会这样:
功能1
private static boolean isValid(String str) {
Pattern pattern = Pattern.compile("^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$", Pattern.CASE_INSENSITIVE);
Matcher emailAddress = pattern.matcher(str);
return emailAddress.matches();
}
功能2
private static boolean isValid(String str) {
Pattern pattern = Pattern.compile("^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,6}$", Pattern.CASE_INSENSITIVE);
Matcher emailAddress = pattern.matcher(str);
return emailAddress.matches();
}
我试图在这里和一些书籍上对正则表达式进行一些研究,看起来正确的正则表达式的概念在验证电子邮件地址方面并不一定。希望是验证ALMOST所有电子邮件地址。但是,CodeEval似乎不这么认为。我尝试使用来自HERE的正则表达式,但他们的在线编辑器/编译器抱怨该正则表达式有100多个错误。我的问题是,是否有一些其他正则表达式确实可以验证每个阳光下的电子邮件?提前感谢您的任何评论/回答