簡體   English   中英

特定域的Java電子郵件驗證

[英]Javascript e-mail validation of specific domains

我無法弄清楚丟失了什么,因此當電子郵件有效時,它將跳過最后一條無效消息,並移至表單上的下一項進行驗證:

enter code here 
    if (document.form1.email.value.length > 0) {

    var tst = document.form1.email.value;
    var okd = ['bankofamerica.com','baml.com','magner.com','ml.com','ust.com','ustrust.com']
    for (var i = 0; i < okd.length; i++) { okd[i] == okd[i].toLowerCase() }

    var emailRE = /^[a-zA-Z0-9._+-]+@([a-zA-Z0-9.-]+\.[a-zA-Z]{2,4})$/
    var aLst = emailRE.exec(tst)
    if (!aLst) {
        alert(tst + ' is not a valid e-mail')
    } else {
        var sLst = aLst[1].toLowerCase()
        for (var i = 0; i < okd.length; i++) {
            if (sLst == okd[i]) {
                //    alert(aLst[1] + ' is allowed');-->

           }
       }

            if (i == okd.length) alert(aLst[1] + ' is not allowed.  Please enter an email address with an authorized domain.')

            document.form1.email.select();
            return false;


    }   
}

我建議將此代碼放入一個函數中,該函數可能名為ValidateEmail()

在循環中:如果您確定電子郵件有效,則return true;否則, return true; 這將阻止進一步執行。 如果該域不匹配,請讓其繼續循環以檢查其他域。

如果循環完成而沒有返回true ,您將知道它與任何內容都不匹配,因此return false;否則, return false; 在最后。

編輯:改用try / catch:

if (document.form1.email.value.length > 0) {

    var tst = document.form1.email.value;
    var okd = ['bankofamerica.com','baml.com','magner.com','ml.com','ust.com','ustrust.com']
    for (var i = 0; i < okd.length; i++) { okd[i] == okd[i].toLowerCase() }

    try {
        var emailRE = /^[a-zA-Z0-9._+-]+@([a-zA-Z0-9.-]+\.[a-zA-Z]{2,4})$/
        var aLst = emailRE.exec(tst)

        if (!aLst)
            throw (tst + ' is not a valid e-mail');

        // isValidDomain will be changed to 'true' only if it matches an item in the array
        var isValidDomain = false;

        var sLst = aLst[1].toLowerCase()
        for (var i = 0; i < okd.length; i++) {
            if (sLst == okd[i]) {
                isValidDomain = true;
                // We break here because a match has been found - no need to compare against the other domain names.
                break;
            }
        }

        if(!isValidDomain)
            throw (aLst[1] + ' is not allowed.  Please enter an email address with an authorized domain.');

        // If execution reaches here, you know it passed both tests!
        return true;

    }
    catch(err) {

        // This code block runs whenever an error occurs

        alert(err);
        document.form1.email.select();
        return false;
    }
}

throw基本上像goto命令一樣。 它將直接跳到代碼的catch(err)部分。

有關嘗試,捕捉和投擲的更多信息:

非常感謝Colin!

我必須刪除以下兩行,以避免暫停代碼繼續運行到下一個驗證字段:

              isValidDomain = true;
                    // We break here because a match has been found - no need to compare against the other domain names. 
                    // break - exits code from running on down to next item on page
                }
            }

            if (!isValidDomain)
                throw (aLst[1] + ' is not allowed.  Please enter an email address with an authorized domain.');

            // If execution reaches here, you know it passed both tests! 
         //   return true; - was not needed, stops code from running on page

        }
        catch (err) {

暫無
暫無

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

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