【问题标题】:Trying to validate email using javascript尝试使用 javascript 验证电子邮件
【发布时间】:2011-09-16 03:27:35
【问题描述】:

我在让以下代码在我的脚本中正确工作时遇到了一点问题:

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;
}

【问题讨论】:

  • 这里有很多关于使用正则表达式验证电子邮件地址的其他线程。您可以通过简单的搜索找到所有这些。这是一个流行的:stackoverflow.com/questions/46155/…

标签: javascript validation email


【解决方案1】:

试试这个

    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
   }

【讨论】:

    【解决方案2】:

    你需要这样做,

     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
       }
    

    【讨论】:

    • 我很困惑,因为我将匹配部分留空,我想我会测试它并且它有效。我不需要在匹配的部分粘贴一些东西吗?我有: var email = $("input#email").val(); if (email == "") { $("#field2 .error1").show(); $("input#email").focus();返回假; } var regx = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9][a-zA-Z0-9.-]*[\.]{1}[a -zA-Z]{2,4}$/ if(regx.test(email)){ // 如果匹配就执行 }else{ $("#field2 .error2").show(); $("input#email").focus();返回假; }
    • 我听不懂你在说什么......如果你不需要使用匹配的部分,就不要使用它。
    【解决方案3】:

    你要比较的是一个正则表达式。

     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
    

    【讨论】:

    • 问题中使用的正则表达式和到目前为止的所有答案都无法通过许多有效的电子邮件地址。名称部分应该能够包含字符 !#$%&'*+-/=?^_`{|}~ 并且如果地址的一部分出现在引号中,则几乎可以包含任何字符。 Source 这些规则将过滤掉有效(但不寻常)的电子邮件地址,例如 Paul+1@example.com 或 Timothy"@"Jones#3@example.org
    【解决方案4】:

    来试试这个 头:

    <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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-06
      • 2011-10-20
      • 2011-02-16
      • 1970-01-01
      • 2012-09-15
      • 1970-01-01
      • 2013-11-07
      • 1970-01-01
      相关资源
      最近更新 更多