Jquery使用RegEx验证电子邮件

时间:2013-07-08 23:59:24

标签: jquery regex validation

我正在尝试使用下面的代码验证电子邮件,目前它正在测试电子邮件以查看它是否与正则表达式匹配,但即使输入了有效的电子邮件,错误也会激活,页面也不会提交

    $('#emailsubmit').submit(function() {
    var email = new RegExp(/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/);


    if (!("#emailAddr").match(email)) {
        $("#errormsg").html("Please insert a valid email");
        $("#errormsg").show();

         var emailaddr = $("#emailAddr").val();

        alert(emailaddr);
        return false;
    } 

});

3 个答案:

答案 0 :(得分:3)

你忘了使用JQuery的.val()方法来获取元素的值。相反,你试图在HTML元素上使用.match()(这显然不是字符串)。代码:

    $('#emailsubmit').submit(function() {
    var email = new RegExp(/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/);


    if (!("#emailAddr").val().match(email)) {
        $("#errormsg").html("Please insert a valid email");
        $("#errormsg").show();

         var emailaddr = $("#emailAddr").val();

        alert(emailaddr);
        return false;
    } 

});

答案 1 :(得分:0)

您匹配的值是“#emailAddr”,而不是ID为“emailAddr”的元素的值。

答案 2 :(得分:0)

这是我的脚本,我已经使用了一段时间......它运行良好,还可以检查邮政编码和其他表单字段以供输入。

function checkEmail(e_mail) {
  var str = new String(e_mail);
  var biz_name = document.myForm.biz_name;
  var zip_code = document.myForm.zip_code;
  var e_mail = document.myForm.e_mail;
  var str2 = new String(zip_code);
  var terms = document.myForm.terms;

      if (biz_name.value == "")
    {
        window.alert("Oops. Please enter your business name!");
        biz_name.focus();
        return false;
    }
    if (zip_code.value == "")
    {
        window.alert("Oops. Please enter your business zip code!");
        zip_code.focus();
        return false;
    }
    if (e_mail.value == "")
    {
        window.alert("Oops. Please enter your email address!");
        e_mail.focus();
        return false;
    }
    if (terms.checked == false)
    {
        window.alert("Oops. Please agree to the terms and conditions!");
        terms.focus();
        return false;
    }
  var isOK = true;

  rExp = /[!\"£$%\^&*()-+=<>,\'#?\\|¬`\/\[\]]/
  if( rExp.test(str) )
    isOK = false;
  if( str.indexOf('.') == -1 || str.indexOf('@') == -1 )
    isOK = false;
  if( str.slice(str.lastIndexOf('.')+1,str.length).length < 2 )
    isOK = false;
  if( str.slice(0,str.indexOf('@')).length < 1 )
    isOK = false;
  if( str.slice(str.indexOf('@')+1,str.lastIndexOf('.')).length < 1 )
    isOK = false;
  if( !isOK )
    alert( "Oops! A valid email is needed.  Check it and try again!" );
    e_mail.focus();

  return isOK;
}