簡體   English   中英

使用Java程序進行電子郵件驗證

[英]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提供的答案。

如果必須在本地使用正則表達式是最好的選擇(而不是通過使用電子郵件進行驗證)。 但是,如果您不想使用它們,那么在管理它的代碼中將會有很多混亂。

如何克服這個問題。 有很多方法

  1. 使用字符串Api檢查字符串中的@符號。
  2. 使用StringTokeniser標記給定字符串使用條件檢查。
  3. 將給定的字符串拆分為多個子字符串,然后進一步拆分。

還有很多。

我建議不要在編寫樣板代碼和正則表達式打個招呼的過程中遇到麻煩。

電子郵件驗證的形式有多種,具體取決於您的電子郵件地址的外觀。 如果看起來像harry@potter.com這樣簡單,那么可以有很多方法來驗證這一點。 其中之一可能是檢查“ @”和“。”。 在for循環中僅發生一次,並且該“。” 始終在“ @”之后。

如果您給我們一些有效的電子郵件地址示例,作為面試問題中的示例,我們中的某些人可以提出一個解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM