2010-10-19 109 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)) { 

也许? (无论如何,这个测试是多余的,因为你的正则表达式坚持非空字符串。)