2015-05-03 30 views
0

我有一個讓用戶輸入電子郵件地址兩次的表單。我需要驗證電子郵件是否像正則表達式,並且這兩個電子郵件匹配。使用Javascript在兩個文本字段中比較兩封電子郵件

我的代碼有問題。請注意,我僅限使用JavaScript。謝謝, 這是我的javascript

function checkEmail(theForm) { 

    var re = /^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@"+"[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$/i; 

    if (theForm.EMAIL_1.value != re) { 
     alert('invalid email address'); 
     return false; 
    } else if (theForm.EMAIL_1.value != theForm.EMAIL_2.value) { 
     alert('Those emails don\'t match!'); 
     return false; 
    } else { 
     return true; 
    } 
} 
+0

*「我的代碼有問題」*究竟是什麼錯誤? –

+0

此外,這是一個時髦的電子郵件正則表達式。我非常懷疑它會匹配任何有效的電子郵件地址。你可以在網上搜索一個可靠的電子郵件正則表達式,而不是在家釀造它。 –

回答

1

你不能用正則表達式進行比較的第一個值。你必須使用正則表達式對象。欲瞭解更多信息,請閱讀在

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec

+0

w3schools不是一個可靠的頁面(從來沒有),我認爲它是由錯誤構建的。他們甚至出售假文憑,他們不以任何方式與W3C相關,並且該網站不是由積極和重要的程序員社區維護的。 (編輯你的鏈接到更好的資源) –

+0

好吧,我將從現在開始使用mozilla參考。感謝您的領導:) –

3

你的問題你不是實際執行一個正則表達式。你只是比較一個正則表達式字符串到一個電子郵件。

if(theForm.EMAIL_1.value != re) /// <--- wrong. 
{ 
    alert('invalid email address'); 
return false; 
} 
0

試試以下功能來驗證您的電子郵件。 驗證後,比較第二封電子郵件。

請注意,正則表達式測試方法在validateEmail方法中使用。

function validateEmail(email) { 
    var re = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i; 
    return re.test(email); 
} 
0

function checkEmail() { 
 
    var e1 = this.EMAIL_1.value; 
 
    var e2 = this.EMAIL_2.value; 
 
    //Email Regex from //stackoverflow.com/a/46181/383904 
 
    var re = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i; 
 
    var isEmail = re.test(e1); 
 
    var isMatch = e1 === e2; 
 
    if(!isEmail){ 
 
    event.preventDefault(); 
 
    alert('Invalid email address'); 
 
    } 
 
    else if (!isMatch){ 
 
    event.preventDefault(); 
 
    alert("Those emails don't match!"); 
 
    } 
 
    // return (isEmail && isMatch); // Uncomment if you need a boolean return 
 
} 
 

 

 
var form = document.getElementById("theForm"); 
 
form.addEventListener("submit", checkEmail, false);
<form id="theForm"> 
 
    <input name="EMAIL_1" type="text"><br> 
 
    Re-enter your email address to confirm<br> 
 
    <input name="EMAIL_2" type="text"><br> 
 
    <input type="submit"> 
 
</form>

+0

感謝您的代碼,但我發現有點困難。它不能與我的代碼一起工作。我在窗體中添加'onsubmit =「return checkEmail(this);」',它仍然不起作用。 – ladyBug

0

下面應該很好地工作!

function validateForm(theForm) { 

    if (theForm.Email_1.value != theForm.Email_2.value) 
    { 
     alert('Emails don\'t match!'); 
     return false; 
    } else { 
     return true; 
    } 
}