尝试使用javascript验证电子邮件

时间:2011-09-16 03:27:35

标签: javascript validation email

我在使用以下一些代码在我的脚本中正确运行时遇到了一些麻烦:

if (email == "") {
    $("#field2 .error1").show();
    $("input#email").focus();
    return false;  
    }
else if(email != /^[a-zA-Z0-9._-]+@[a-zA-Z0-9][a-zA-Z0-9.-]*[\.]{1}[a-zA-Z]{2,4}$/) {
    $("#field2 .error2").show();
    $("input#email").focus();
    return false;  
    }

基本上我的页面上有一个表单,它使用外部js文件验证了几个字段。我希望它检查电子邮件字段是否为空或是否与正则表达式不匹配。如果它是空白的,则返回.error,如果它与正则表达式不匹配,我希望它显示.error2。

正在发生的事情是显示错误,但即使我输入了正确的电子邮件地址,它也无法验证并继续显示.error2。我很难过,因为我在这里失踪了,所以任何帮助都会受到赞赏。

即使我试试这个,

if (email == "" || email != /^[a-zA-Z0-9._-]+@[a-zA-Z0-9][a-zA-Z0-9.-]*[\.]{1}[a-zA-Z]{2,4}$/) {
    $("#field2 .error1").show();
    $("input#email").focus();
    return false;  
    }

我仍然无法发送表格???


好的所以我已经尝试过了,它似乎正常运作。它看起来是否正确?我会考虑regx字符串并使用更好的字符串,更多的是让它按预期工作。

var email = $("input#email").val();
var regx = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9][a-zA-Z0-9.-]*[\.]{1}[a-zA-Z]{2,4}$/;   
if (email == "") {
    $("#field2 .error").show();
    $("input#email").focus();
    return false;  
}
else if (!regx.test(email)){
    $("#field2 .error2").show();
    $("input#email").focus();
    return false;
}

4 个答案:

答案 0 :(得分:2)

试试这个

    var regexp=/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\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]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([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(regexp.test(email)){
   // matched
  }else{
   // not matched
   }

答案 1 :(得分:0)

你需要这样做,

 var regx=/^[a-zA-Z0-9._-]+@[a-zA-Z0-9][a-zA-Z0-9.-]*[\.]{1}[a-zA-Z]{2,4}$/  // create your regular expresseion

 if(regx.test(email)){// use test() method to do the match
   // do if match
  }else{
   // not matched
   }

答案 2 :(得分:0)

您所比较的是正则表达式。

 var filter = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9][a-zA-Z0-9.-]*[\.]{1}[a-zA-Z]{2,4}$/;

 if (!filter.test($("input#email").val())) 
 {

    // invalid email

 }
 //valid email

答案 3 :(得分:0)

在这里尝试一下 头:

<script type="text/javascript">
function validateEmail(theForm) {
    if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(theForm.email-id.value))
    {
        return(true);
    }
    alert("Invalid e-mail address! Please enter again carefully!.");
    return(false);
}
</script>

体:

<form onSubmit="return validateEmail(this);" action="">
E-mail Address:
    <input type="text" name="emailid" />
    <input type="submit" value="Submit" />
    <input type="reset" value="Reset" />
</form>