2010-10-19 110 views
1

電子郵件驗證我用簡單的js電子郵件驗證,如:問題與Opera和Chrome的

function validation(email) { 
    var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/; 
    return reg.test(email); 
} 


function check(){ 
    if ($("#subemail").hasClass("bad")) { 
     var subemail = $("#subemail").val(); 
     if((subemail!=0)&&validation(subemail)) { 
      $("#subemail").css('background','transparent').css('color','#3b3b3b'); 
      $('.arrow').css('visibility','hidden'); 
     } 
     else { 
      $("#subemail").css('background','url(img/red.png)').css('color','white'); 
      $('.arrow').css('visibility','visible'); 
     } 
    } 
} 

一切工作正常使用Firefox,但同時在Chrome或Opera做它,它總是返回false

+3

準備好使用這樣糟糕的測試表達式來調用。 :) – bzlm 2010-10-19 13:26:02

+3

我代表所有人到處都請求您不要使用該正則表達式來驗證電子郵件地址。它將有效地址數量視爲無效。最明顯的是,它不允許在用戶名部分輸入「+」。 – VoteyDisciple 2010-10-19 13:26:51

+2

對於任何想要驗證電子郵件地址的人來說,這都是很好的解讀: http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until -i.aspx – bot403 2010-10-19 13:29:36

回答

0

在這個測試:

if((subemail!=0)&&validation(subemail)) { 

這是什麼,你的意思是檢查電子郵件的候選字符串爲0?您的意思是:

if ((subemail != '') && validation(subemail)) { 

也許? (無論如何,這個測試是多餘的,因爲你的正則表達式堅持非空字符串。)