Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 需要电子邮件验证建议_Javascript_Email - Fatal编程技术网

Javascript 需要电子邮件验证建议

Javascript 需要电子邮件验证建议,javascript,email,Javascript,Email,可能重复: 我有javascript用于电子邮件验证: //function to check emails function echeck(str) { var at="@" var dot="." var lat=str.indexOf(at) var lstr=str.length var ldot=str.indexOf(dot) if (str.indexOf(at)==-1){ return false; }

可能重复:

我有javascript用于电子邮件验证:

     //function to check emails
     function echeck(str) {
   var at="@"
   var dot="."
   var lat=str.indexOf(at)
   var lstr=str.length
   var ldot=str.indexOf(dot)
   if (str.indexOf(at)==-1){
     return false;
   }

   if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
   return false;
   }

   if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
    return false;   }

    if (str.indexOf(at,(lat+1))!=-1){
    return false; }

    if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
    return false; }

    if (str.indexOf(dot,(lat+2))==-1){
    return false;    }

    if (str.indexOf(" ")!=-1){
    return false;
   }

    return true;                    
    }
它工作正常,但没有检查这个->!!!!!!!!!@#####。com

请帮助我检查电子邮件中的额外spl字符


关于,

您提供的示例不是有效的电子邮件地址,至少因为######com不是有效的域名。您真正应该做的是使用正则表达式检查电子邮件地址

正则表达式最简单的版本是

/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/
一个更完整的是

/^[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|xxx)$/
RFC2822的正式实施将是

/^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])$/
你可以像这样检查电子邮件地址:

function echeck(str)
{
    //using the most simple version
    //substitute for another pattern if more complete matching is required
    var expr = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i;
    return expr.test(str);
}

请注意,仅在JS中进行验证不是一个好主意。您应该始终在服务器中执行另一个验证,以防止有人将坏数据传递到您的脚本中,并且您可以愉快地使用它。请记住,您不能保证表单将从您的页面提交。

您寻求的答案是否正确?被@Mark Biek击败19秒:-(螺旋验证。随着各种奇怪的TLD和非ASCII字符集出现在当今的域中,任何超出
*@*
的验证都是完全无用的