使用jQuery和regex验证电子邮件地址

使用jQuery和regex验证电子邮件地址,regex,validation,email,email-validation,Regex,Validation,Email,Email Validation,我不太确定怎么做。我需要使用类似以下内容的正则表达式验证电子邮件地址: [a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum) 然后我需要在jQuery函数中运行它,如下所示:

我不太确定怎么做。我需要使用类似以下内容的正则表达式验证电子邮件地址:

[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)
然后我需要在jQuery函数中运行它,如下所示:

$j("#fld_emailaddress").live('change',function() { 
var emailaddress = $j("#fld_emailaddress").val();

// validation here? 

if(emailaddress){}

// end validation

$j.ajax({  
        type: "POST",  
         url: "../ff-admin/ff-register/ff-user-check.php",  
        data: "fld_emailaddress="+ emailaddress,  
        success: function(msg)
        { 
            if(msg == 'OK') { 
            $j("#fld_username").attr('disabled',false); 
            $j("#fld_password").attr('disabled',false); 
            $j("#cmd_register_submit").attr('disabled',false); 
            $j("#fld_emailaddress").removeClass('object_error'); // if necessary
            $j("#fld_emailaddress").addClass("object_ok");
            $j('#email_ac').html('&nbsp;<img src="img/cool.png" align="absmiddle"> <font color="Green"> Your email <strong>'+ emailaddress+'</strong> is OK.</font>  ');
            } else {  
            $j("#fld_username").attr('disabled',true); 
            $j("#fld_password").attr('disabled',true); 
            $j("#cmd_register_submit").attr('disabled',true);  
            $j("#fld_emailaddress").removeClass('object_ok'); // if necessary
            $j("#fld_emailaddress").addClass("object_error");
            $j('#email_ac').html(msg);
            }
        }
     });
});
$j(“#fld_emailaddress”).live('change',function(){
var emailaddress=$j(“#fld_emailaddress”).val();
//在这里验证?
如果(电子邮件地址){}
//结束验证
$j.ajax({
类型:“POST”,
url:“../ff admin/ff register/ff user check.php”,
数据:“fld_emailaddress=“+emailaddress,
成功:功能(msg)
{ 
如果(msg='OK'){
$j(“#fld_用户名”).attr('disabled',false);
$j(“#fld#U密码”).attr('disabled',false);
$j(“#cmd#register_submit”).attr('disabled',false);
$j(“#fld_emailaddress”).removeClass('object_error');//如有必要
$j(“fld#u emailaddress”).addClass(“object#u ok”);
$j('email_ac').html('Your email'+emailaddress+'可以');
}否则{
$j(“#fld_用户名”).attr('disabled',true);
$j(“#fld#U密码”).attr('disabled',true);
$j(“#cmd#register_submit”).attr('disabled',true);
$j(“#fld_emailaddress”).removeClass('object_ok');//如果需要
$j(“#fld_emailaddress”).addClass(“对象错误”);
$j('#email_ac').html(msg);
}
}
});
});
验证到哪里去了?表达式是什么?

更新
  • 使用新正则表达式
  • 增加了对(+符号)的支持


  • 注意:存在电子邮件检查
      这是我的解决方案:

      function isValidEmailAddress(emailAddress) {
          var pattern = new RegExp(/^[+a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/i);
          // alert( pattern.test(emailAddress) );
          return pattern.test(emailAddress);
      };
      

      发现这里的RegExp:

      我们还可以使用正则表达式(/^([\w.-]+)@([\w-]+)((.(\w){2,3})+$/i)来验证电子邮件地址格式是否正确

      var emailRegex = new RegExp(/^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$/i);
       var valid = emailRegex.test(emailAddress);
        if (!valid) {
          alert("Invalid e-mail address");
          return false;
        } else
          return true;
      

      我建议您使用

      为什么?

      • IANA TLD验证
      • 语法验证(根据RFC 822)
      • 最常见TLD和电子邮件域的拼写建议
      • 拒绝mailinator.com等临时电子邮件帐户域
      怎么做?

      在您的网站上包括并使用以下功能:

      $("input#email-address").verimail({
          messageElement: "p#status-message"
      });
      
      如果您有表单并希望在提交时验证电子邮件,则可以使用getVerimailStatus功能:

      $("input#email-address").verimail({
          messageElement: "p#status-message"
      });
      
      if($("input#email-address").getVerimailStatus() < 0){
          // Invalid email
      }else{
          // Valid email
      }
      
      if($(“输入#电子邮件地址”).getVerimailStatus()<0){
      //无效电子邮件
      }否则{
      //有效电子邮件
      }
      
      哈哈,这样好多了

          function isValidEmailAddress(emailAddress) {
              var pattern = new RegExp(/^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/);
              return pattern.test(emailAddress);
          };
      
      $(文档).ready(函数(){
      $('#emailid').focusout(函数(){
      $('#emailid').filter(函数(){
      var email=$('#emailid').val();
      var emailReg=/^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
      如果(!emailReg.test(电子邮件)){
      警报(“请输入有效电子邮件”);
      }否则{
      提醒(“感谢您的有效电子邮件”);
      }
      });
      });                 
      });
      
      Javascript:

      var pattern = new RegExp("^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$");
      var result = pattern .test(str);
      

      以下情况不允许使用正则表达式:

      abc@gmail..com
      abc@gmail.com..
      
      abc.efg@gmail.com
      abc@gmail.com.my
      

      允许:

      abc@gmail..com
      abc@gmail.com..
      
      abc.efg@gmail.com
      abc@gmail.com.my
      
      来源:

      试试这个

      function isValidEmailAddress(emailAddress) {
          var pattern = new RegExp(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/);
          return pattern.test(emailAddress);
      };
      

      你可以使用这个功能

       var validateEmail = function (email) {
      
              var pattern = /^([a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+(\.[a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+)*|"((([ \t]*\r\n)?[ \t]+)?([\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|\\[\x01-\x09\x0b\x0c\x0d-\x7f\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))*(([ \t]*\r\n)?[ \t]+)?")@(([a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|[a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF][a-z\d\-._~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]*[a-z\d\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])\.)+([a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]|[a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF][a-z\d\-._~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]*[a-z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])\.?$/i;
      
      
              if (pattern.test(email)) {
                  return true;
              }
              else {
                  return false;
              }
          };
      
      本机方法:

      $("#myform").validate({
       // options...
      });
      
      $.validator.methods.email = function( value, element ) {
        return this.optional( element ) || /[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}/.test( value );
      }
      

      来源:

      感谢aSeptik除了“丢失”邮件地址的电子邮件工作正常是的,知道没有100%的正则表达式存在,但可以“相当”地关闭没有太深的验证,但它已经给了我一个错误的肯定asdf@adsf.com@gcb:嗨,如果正则表达式不能满足你的需要,你可以改变它,不管怎样,我已经测试过了,它工作得很好。客户端上只有正则表达式,不知道是否有邮件服务器,也不知道域本身是否存在。它只是检查任何电子邮件的语法是否有效。这只是为了帮助用户写出正确的地址。这不是一个验证。工作完美!谢谢你关于加号的观点是正确的,但是你的正则表达式不如我在示例中使用的正则表达式好。ps:我已经更新了我的正则表达式以支持加号。大多数情况下,你只是想验证用户是否以正确的格式输入了电子邮件。识别诸如“2”而不是“@”之类的打字错误。所以我比原来的答案更喜欢这个,但aSeptik的答案很全面,我也投了赞成票。test@gmail..com它说是有效的-错误,改变常规表达我更喜欢你的解决方案移动网站。另一个会让我的智能手机融化;)+1 javascriptIt中的语法问题将不会验证äüõetc字母!!你看,实际上这是很有帮助的。标题上写的是JQuery,这是迄今为止唯一一个有JQuery示例的答案。这验证了abc.b.@yahoo.comVerimail在keyup上不断验证,这意味着,一旦开始键入,就会收到一条错误消息。一般来说,这是一个很棒的插件,但这是一个交易破坏者-我更愿意只在手动触发时进行验证,即在单击提交按钮或离开字段之前。