[英]Email validation using java program
我正在編寫有關電子郵件驗證的Java程序。
該代碼不得包含:
String
方法等) 該代碼必須包含:
我了解到,不使用正則表達式將使電子郵件驗證更加困難,但是這個問題已在采訪中提出。
是否有可能編寫這樣的代碼或任何替代方法?
使用這樣的東西:
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");
}
}
}
}
}
這適用於我接受的大多數標准檢查。 可以在效率方面改進代碼(很多),但是我的猜測是,更多的是從“可以完成”或學術角度而不是使用角度。 如果您打算使用此方法, 我強烈建議您不要使用它 ,請參考@ vikeng21提供的答案。
如果必須在本地使用正則表達式是最好的選擇(而不是通過使用電子郵件進行驗證)。 但是,如果您不想使用它們,那么在管理它的代碼中將會有很多混亂。
如何克服這個問題。 有很多方法
還有很多。
我建議不要在編寫樣板代碼和正則表達式打個招呼的過程中遇到麻煩。
電子郵件驗證的形式有多種,具體取決於您的電子郵件地址的外觀。 如果看起來像harry@potter.com這樣簡單,那么可以有很多方法來驗證這一點。 其中之一可能是檢查“ @”和“。”。 在for循環中僅發生一次,並且該“。” 始終在“ @”之后。
如果您給我們一些有效的電子郵件地址示例,作為面試問題中的示例,我們中的某些人可以提出一個解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.