【问题标题】:Javascript email validation does not workJavascript 电子邮件验证不起作用
【发布时间】:2025-12-02 15:05:01
【问题描述】:

我的代码有什么问题?我找不到解决方案。

var re = "/^(([^<>()[\]\\.,;:\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,}))$/";

var email= document.getElementById("email").value;

if (re.test(email) == false) {  
    document.getElementById("email").focus();
    return false;
}

双引号引起的问题,谢谢! 由于我的声誉,我不能投票:-(

【问题讨论】:

  • 为什么这么复杂? see here
  • 您告诉我们出了什么问题。你有错误吗?它没有正确验证吗?它是否传递了所有输入,或者它没有传递任何有效的电子邮件,或者它给出了误报/否定?
  • 天哪!这是一个复杂的验证!
  • 你不需要投票,只需accept the correct answer

标签: javascript email-validation


【解决方案1】:

就像 Suresh 建议的那样,您应该删除正则表达式字符串周围的引号 (")。 所以你的第一行应该是:

var re = /^(([^<>()[\]\\.,;:\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,}))$/;

我在下面制作了一个工作示例:

<script>
function test()
{
  var re = /^(([^<>()[\]\\.,;:\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,}))$/;
  var email= "test@somedomain.com";

  if (re.test(email) == false) {  
    alert("invalid email address");
    return;
  }
  alert("valid address");
}
</script>
<button onclick="test()">TEST</button>

【讨论】:

    【解决方案2】:

    让我们试试这个对我来说很聪明

      function IsEmail(email) {
                    var regex = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
                    return regex.test(email);
                 }
    
    if(!IsEmail(mailString)){
                    $("#somediv").text(" Email should be valid ");
                    return false;
                    }
    

    【讨论】:

    • 人 - 问题是“我的代码有什么问题”。这不是“如何验证电子邮件地址”。
    • @jim竹子..删除“”到你的正则表达式字符串。