我正在编写一个关于电子邮件验证的java程序。
代码不得包含:
String
方法之外)代码必须包含:
据我所知,如果不使用正则表达式,电子邮件验证会更难,但在接受采访时会提出这个问题。
有没有可能编写这样的代码或任何替代方法?
答案 0 :(得分:2)
使用类似的东西:
public class EmailValidation {
public static void main(String[] args) {
String email = "SAMPLE_EMAIL";
String[] deniedIdCharList = { ",", ";", "'", "\"", "[", "]", "|", "\\",
"=", "!", "#", "$", "%", "^", "&", "*", "(", ")",
"/", "`", "~", ":", "<", ">", "?", "{", "}" };
int atLoc = email.indexOf("@");
if (atLoc == -1) {
System.out.println("fail");
} else {
String id = email.substring(0, atLoc);
String domain = email.substring(atLoc + 1, email.length());
if (domain.indexOf("@") != -1) {
System.out.println("fail");
}
else {
for (String deny : deniedIdCharList) {
if (id.indexOf(deny) != -1) {
System.out.println("fails");
}
if (domain.indexOf(deny) != -1) {
System.out.println("fails");
}
}
if (id.length() == 0 || domain.length() == 0) {
System.out.println("fails");
}
int dotIndex = domain.indexOf(".");
String host = domain.substring(0, dotIndex);
String extn = domain.substring(dotIndex + 1);
if (host.length() == 0) {
System.out.println("fail");
}
if ((extn.length() != 2 && extn.length() != 3 && extn.length() != 5)) {
System.out.println("fail");
}
if (extn.length() == 5 && extn.indexOf(".") == -1) {
System.out.println("fail");
}
}
}
}
}
这适用于我所经历的大多数标准检查。代码可以在效率方面进行改进(A LOT),但我的猜测是,这更多来自“可以完成”或学术的观点而不是使用观点。如果您打算使用此方法我强烈反对,请参阅@ vikeng21提供的答案
答案 1 :(得分:1)
如果 在本地执行此操作(而不是通过电子邮件的使用验证),则使用正则表达式是最佳选择。但是如果你不想使用它们,你的代码管理它就会变得很混乱。
如何克服这个问题。有很多方法
还有更多。
我建议不要经历编写锅炉板代码的所有麻烦,并对正则表达式说嗨。
答案 2 :(得分:0)
可以有多种形式的电子邮件验证,具体取决于您的电子邮件地址的外观。 如果它看起来像harry@potter.com一样简单,那么有很多方法可以验证这一点。其中一个可以检查'@'和'。'在for循环中只出现一次并且'。'总是在'@'之后跟随。
如果您在面试问题中给出一些有效电子邮件地址的示例,我们中的一些人可以提出解决问题的程序。