2013-07-17 117 views
-1

我想使用正則表達式進行郵件驗證,但它不工作。哪裏是我的錯誤? 它通常工作,但是當我把一個正則表達式控制它從來沒有看到是你輸入的郵件是啓用這個正則表達式格式。郵件驗證與正則表達式

這是我的代碼;

的index.jsp

<head> 
<title>Mail Control From Db</title> 
<script type="text/javascript" src="jquery-1.2.6.min.js"></script> 
<script type="text/javascript" src="check.js"></script> 
</head> 

<body> 

<div align="left"> 
<form name="chkForm" id="chkForm" method="post" > 
    <table> 
      <tr> 
        <td>Email</td> 
        <td> 
        <input type="text" name="email" id="email" size="20" ></td> 
        <td> 
        <div id="emailInfo" align="left"></div> 
        </td> 
      </tr> 

    </table> 
</form> 
</div> 

</body> 
</html> 

check.js

$(document).ready(function() 
{  
var myForm = $("#chkForm"), email = $("#email"), emailInfo = $("#emailInfo");  


//send ajax request to check email   
email.blur(function() 
{   
$.ajax({ 
    type: "POST", 
    data: "email="+$(this).attr("value"), 
    url: "check.jsp", 

    beforeSend: function() 
    { 
     emailInfo.html("<font color='blue'>Kontrol Ediliyor..</font>"); 
    },//end beforeSend: function() 



    success: function(data) 
    {     
     var reg = /\[email protected]\S+\.\S+/; 


     if (reg.test(email.val())) 
     { 
      var checkData = data.toString(); 
       if(checkData == 0) 
       { 
        emailok = false; 
        emailInfo.html("<font color='red'>Mail in use</font>"); 
       }//end if(checkData == 0) 
       else if(checkData == 1) 
       { 
        emailok = true; 
        emailInfo.html("<font color='green'>Mail is not in use</font>"); 
       }//end else if(checkData == 1) 

     }//end if (reg.test(email.val())) 

     else 
     { 
      emailInfo.html("<font color='red'>ınvalid mail</font>"); 
     }//end else 
    }// end success: function(data) 


}); 
});//end email.blur(function() 
});//end $(document).ready(function() 

我在check.jsp一個問題。並解決它。

  1. 問題是關於regex.Regex是錯誤的。
  2. 條件錯誤。我用if(reg.test(email.val()))改變它。
+1

請將您的解決方案添加爲答案*並將其標記爲正確的答案。 – brasofilo

+2

可能使用[使用正則表達式驗證電子郵件地址]的副本(http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address) – tripleee

回答

0

你的正則表達式只允許大寫字母,所以[email protected]可以,但[email protected]不可以。您可以更改或者通過在正則表達式本身

/^[A-Za-z0-9._%+-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,6}$/ 

將不區分大小寫的標誌,以你的正則表達式

/^[A-Z0-9._%+-][email protected][A-Z0-9.-]+\.[A-Z]{2,6}$/i 

或乾脆讓AZ但是請記住,檢查有效性的電子郵件是一個相當很難完成的任務,因爲允許的郵件地址範圍非常廣泛,甚至可能包含特殊字符,比如äö等。因此,您的正則表達式並不完美,請牢記!

在PHP中,我使用了this function多年,它似乎總是工作。

爲什麼你在這種情況下使用.toString().test()爲您提供了一個布爾值,您可以使用== false完美檢查 - 是否有任何理由將其轉換爲字符串?

+0

有沒有正則表達式,然後你可以給我建議。 和它不工作我認爲我有一個問題在那裏; if(reg.test(email).toString()== false) – JavaCandir

+0

我根據你的問題編輯了我的答案。 –

+0

我知道這是一個簡單的問題,但我是新的js。 我們如何更改該代碼? 我要寫什麼? – JavaCandir