精华内容
下载资源
问答
  • 验证电子邮件地址.rar

    2010-07-02 09:45:04
    验证电子邮件地址.rar验证电子邮件地址.rar验证电子邮件地址.rar
  • 如何在JavaScript中验证电子邮件地址

    千次阅读 2019-11-29 13:55:23
    如何在JavaScript中验证电子邮件地址

    如何在JavaScript中验证电子邮件地址?


    #1楼

    squirtle相比 ,这是一个复杂的解决方案,但是在正确验证电子邮件方面做得非常出色:

    function isEmail(email) { 
        return /^((([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.test(email);
    } 
    

    像这样使用:

    if (isEmail('youremail@yourdomain.com')){ console.log('This is email is valid'); }
    

    #2楼

    做这个:

    [a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?
    

    为什么? 它基于RFC 2822RFC 2822是必须遵循的标准所有电子邮件地址。 而且我不确定您为什么要打扰“简单”的东西……无论如何您都要复制并粘贴它;)

    通常,在将电子邮件地址存储在数据库中时,我会将它们设置为小写,并且在实践中,通常可以将正则表达式标记为不区分大小写。 在这些情况下,这会稍微缩短:

    [a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?
    

    这是在JavaScript中使用的示例(结尾不区分大小写的标记i )。

    var emailCheck=/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i;
    console.log( emailCheck.test('some.body@domain.co.uk') );
    

    注意事项
    从技术上讲,某些电子邮件可以在@符号前的部分中包含引号,并在引号内包含转义符(因此,您的电子邮件用户可能很讨厌,只要包含用引号括起来的@"..."之类的内容即可)。 Nobody做到这一点! 已经过时了。 但是,它包含在真正的RFC 2822标准中,在此省略。

    更多信息: http : //www.regular-expressions.info/email.html


    #3楼

    为了完整起见这里有另一个符合RFC 2822的正则表达式

    官方标准称为RFC 2822 。 它描述了有效电子邮件地址必须遵守的语法。 您可以( 但不应该继续 阅读 )使用以下正则表达式实现它:

    (?:[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])+)\\])

    (...)如果省略使用双引号和方括号的语法,则将获得RFC 2822的更实际实现。 它仍然会匹配今天实际使用的所有电子邮件地址的99.99%。

    [a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?

    您可以做的进一步更改是允许任何两个字母的国家/地区代码顶级域名,仅允许特定的通用顶级域名。 此正则表达式过滤虚拟电子邮件地址,如asdf@adsf.adsf添加新的顶级域后,将需要对其进行更新

    [a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+(?:[AZ]{2}|com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum)\\b

    因此,即使遵循官方标准,仍然需要权衡取舍。 不要盲目地从在线图书馆或论坛中复制正则表达式。 始终根据自己的数据和自己的应用程序对其进行测试。

    重点矿


    #4楼

    在现代浏览器中,您可以使用纯JavaScript和DOM在@Sushil的答案之上构建:

    function validateEmail(value) {
      var input = document.createElement('input');
    
      input.type = 'email';
      input.required = true;
      input.value = value;
    
      return typeof input.checkValidity === 'function' ? input.checkValidity() : /\S+@\S+\.\S+/.test(value);
    }
    

    我在小提琴http://jsfiddle.net/boldewyn/2b6d5/中整理了一个示例。 与功能检测和Squirtle's Answer的准系统验证相结合,它将您从正则表达式大屠杀中解放出来,并且不会在旧的浏览器上出现问题。


    #5楼

    <form name="validation" onSubmit="return checkbae()">
        Please input a valid email address:<br />
    
        <input type="text" size=18 name="emailcheck">
        <input type="submit" value="Submit">
    </form>
    
    <script language="JavaScript1.2">
        var testresults
        function checkemail(){
            var str = document.validation.emailcheck.value
            var filter = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
            if (filter.test(str))
                testresults = true
            else {
                alert("Please input a valid email address!")
                testresults = false
            }
            return (testresults)
        }
    </script>
    
    <script>
        function checkbae(){
            if (document.layers || document.getElementById || document.all)
                return checkemail()
            else
                return true
        }
    </script>
    

    #6楼

    我对正则表达式的了解不是很好。 这就是为什么我先使用简单的正则表达式检查常规语法,然后再使用其他函数检查更具体的选项的原因。 这可能不是最佳的技术解决方案,但是通过这种方式,我可以变得更加灵活和快捷。

    我遇到的最常见错误是空格(尤其是开头和结尾),偶尔还有双点。

    function check_email(val){
        if(!val.match(/\S+@\S+\.\S+/)){ // Jaymon's / Squirtle's solution
            // Do something
            return false;
        }
        if( val.indexOf(' ')!=-1 || val.indexOf('..')!=-1){
            // Do something
            return false;
        }
        return true;
    }
    
    check_email('check@thiscom'); // Returns false
    check_email('check@this..com'); // Returns false
    check_email(' check@this.com'); // Returns false
    check_email('check@this.com'); // Returns true
    

    #7楼

    这是正确的RFC822版本。

    function checkEmail(emailAddress) {
      var sQtext = '[^\\x0d\\x22\\x5c\\x80-\\xff]';
      var sDtext = '[^\\x0d\\x5b-\\x5d\\x80-\\xff]';
      var sAtom = '[^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+';
      var sQuotedPair = '\\x5c[\\x00-\\x7f]';
      var sDomainLiteral = '\\x5b(' + sDtext + '|' + sQuotedPair + ')*\\x5d';
      var sQuotedString = '\\x22(' + sQtext + '|' + sQuotedPair + ')*\\x22';
      var sDomain_ref = sAtom;
      var sSubDomain = '(' + sDomain_ref + '|' + sDomainLiteral + ')';
      var sWord = '(' + sAtom + '|' + sQuotedString + ')';
      var sDomain = sSubDomain + '(\\x2e' + sSubDomain + ')*';
      var sLocalPart = sWord + '(\\x2e' + sWord + ')*';
      var sAddrSpec = sLocalPart + '\\x40' + sDomain; // complete RFC822 email address spec
      var sValidEmail = '^' + sAddrSpec + '$'; // as whole string
    
      var reValidEmail = new RegExp(sValidEmail);
    
      return reValidEmail.test(emailAddress);
    }
    

    #8楼

    只需使用HTML来检查输入的电子邮件地址是否有效。

    <input type="email"/>
    

    无需编写任何函数进行验证。


    #9楼

    所有电子邮件地址都包含一个“ @”符号。 测试必要条件:

    email.indexOf("@") > 0
    

    不要为更复杂的事情而烦恼。 即使您可以完美地确定电子邮件在RFC语法上是否有效,也不会告诉您电子邮件是否属于提供电子邮件的人。 那才是真正重要的。

    要进行测试,请发送验证消息。


    #10楼

    这是节点验证器的操作方式:

    /^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9\-](?!\.)){0,61}[a-zA-Z0-9]?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9\-](?!$)){0,61}[a-zA-Z0-9]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/
    

    #11楼

    在验证函数中使用以下代码:

    var emailID = document.forms["formName"]["form element id"].value;
    atpos = emailID.indexOf("@");
    dotpos = emailID.lastIndexOf(".");
    if (atpos < 1 || ( dotpos - atpos < 2 ))
    {
        alert("Please enter correct email ID")
        return false;
    }
    

    否则,您可以使用jQuery 。 内部规则定义:

    eMailId: {
        required: true,
        email: true
    }
    

    #12楼

    Microsoft在ASP.NET MVC中提供的正则表达式为

    /^[\w-]+(\.[\w-]+)*@([a-z0-9-]+(\.[a-z0-9-]+)*?\.[a-z]{2,6}|(\d{1,3}\.){3}\d{1,3})(:\d{4})?$/
    

    如果存在缺陷,我会在此处发布-尽管它始终非常适合我的需求。


    #13楼

    这是有关使用正则表达式验证电子邮件地址的很好的讨论。 “ 比较验证正则表达式的电子邮件地址

    这是当前与JavaScript兼容的顶级表达式,仅供参考:

    /^[-a-z0-9~!$%^&*_=+}{\'?]+(\.[-a-z0-9~!$%^&*_=+}{\'?]+)*@([a-z0-9_][-a-z0-9_]*(\.[-a-z0-9_]+)*\.(aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|mobi|[a-z][a-z])|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,5})?$/i
    

    #14楼

    我发现这是最好的解决方案:

    /^[^\s@]+@[^\s@]+\.[^\s@]+$/
    

    它允许以下格式:

    1.  prettyandsimple@example.com
    2.  very.common@example.com
    3.  disposable.style.email.with+symbol@example.com
    4.  other.email-with-dash@example.com
    9.  #!$%&'*+-/=?^_`{}|~@example.org
    6.  "()[]:,;@\\\"!#$%&'*+-/=?^_`{}| ~.a"@example.org
    7.  " "@example.org (space between the quotes)
    8.  üñîçøðé@example.com (Unicode characters in local part)
    9.  üñîçøðé@üñîçøðé.com (Unicode characters in domain part)
    10. Pelé@example.com (Latin)
    11. δοκιμή@παράδειγμα.δοκιμή (Greek)
    12. 我買@屋企.香港 (Chinese)
    13. 甲斐@黒川.日本 (Japanese)
    14. чебурашка@ящик-с-апельсинами.рф (Cyrillic)

    它显然用途广泛,并允许使用所有重要的国际字符,同时仍强制执行基本的any @@ thing.anything格式。 它会阻止RFC在技术上允许的空间,但是它们很少见,我很乐意这样做。


    #15楼

    我真的很期待解决这个问题。 所以我在上面修改了电子邮件验证正则表达式

    • 原版的
      /^(([^<>()\\[\\]\\\\.,;:\\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,}))$/

    • 改性
      /^(([^<>()\\[\\]\\.,;:\\s@\\"]+(\\.[^<>()\\[\\]\\.,;:\\s@\\"]+)*)|(\\".+\\"))@(([^<>()\\.,;\\s@\\"]+\\.{0,1})+[^<>()\\.,;:\\s@\\"]{2,})$/

    通过Wikipedia电子邮件地址中的示例。

    您可以在这里看到结果。

    在此处输入图片说明


    #16楼

    显然,就是这样:

    /^([\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+\.)*[\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+@((((([a-z0-9]{1}[a-z0-9\-]{0,62}[a-z0-9]{1})|[a-z])\.)+[a-z]{2,6})|(\d{1,3}\.){3}\d{1,3}(\:\d{1,5})?)$/i
    

    取自10年10月1日http://fightingforalostcause.net/misc/2006/compare-email-regex.php

    但是,当然,这忽略了国际化。


    #17楼

    正则表达式,用于验证电子邮件地址

    [a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])+
    

    #18楼

    不检查TLD是否存在的解决方案是不完整的。

    对此问题的几乎所有答案都建议使用Regex来验证电子邮件地址。 我认为Regex仅适用于基本验证。 看来,电子邮件地址的检查验证实际上是两个独立的问题:

    1-电子邮件格式的验证:确保电子邮件是否符合RFC 5322中电子邮件的格式和模式,以及TLD是否实际存在。 您可以在此处找到所有有效TLD的列表。

    例如,尽管地址example@example.ccc将通过正则表达式,但它不是有效的电子邮件,因为ccc不是IANA的顶级域。

    2-确保电子邮件确实存在:为此, 唯一的选择向用户发送电子邮件


    #19楼

    维基百科标准邮件语法:

    https://zh.wikipedia.org/wiki/ 电子邮件地址 #Examples https://fr.wikipedia.org/wiki/Adresse_%C3%A9lectronique#Syntaxe_exacte

    function validMail(mail)
    {
        return /^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()\.,;\s@\"]+\.{0,1})+([^<>()\.,;:\s@\"]{2,}|[\d\.]+))$/.test(mail);
    }
    
    // VALID MAILS
    
    validMail('Abc@example.com') // Return true
    validMail('Abc@example.com.') // Return true
    validMail('Abc@10.42.0.1') // Return true
    validMail('user@localserver') // Return true
    validMail('Abc.123@example.com') // Return true
    validMail('user+mailbox/department=shipping@example.com') // Return true
    validMail('"very.(),:;<>[]\".VERY.\"very@\\ \"very\".unusual"@strange.example.com') // Return true
    validMail('!#$%&\'*+-/=?^_`.{|}~@example.com') // Return true
    validMail('"()<>[]:,;@\\\"!#$%&\'-/=?^_`{}| ~.a"@example.org') // Return true
    validMail('"Abc@def"@example.com') // Return true
    validMail('"Fred Bloggs"@example.com') // Return true
    validMail('"Joe.\\Blow"@example.com') // Return true
    validMail('Loïc.Accentué@voilà.fr') // Return true
    validMail('" "@example.org') // Return true
    validMail('user@[IPv6:2001:DB8::1]') // Return true
    
    // INVALID MAILS
    
    validMail('Abc.example.com') // Return false
    validMail('A@b@c@example.com') // Return false
    validMail('a"b(c)d,e:f;g<h>i[j\k]l@example.com') // Return false
    validMail('just"not"right@example.com') // Return false
    validMail('this is"not\allowed@example.com') // Return false
    validMail('this\ still\"not\\allowed@example.com') // Return false
    validMail('john..doe@example.com') // Return false
    validMail('john.doe@example..com') // Return false
    

    显示此测试: https : //regex101.com/r/LHJ9gU/1


    #20楼

    JavaScript可以匹配正则表达式:

    emailAddress.match( / some_regex /);
    

    这是电子邮件的RFC22正则表达式:

    ^((?>[a-zA-Z\d!#$%&'*+\-/=?^_`{|}~]+\x20*|"((?=[\x01-\x7f])[^"\\]|\\[\x01-\x7f])*
    "\x20*)*(?<angle><))?((?!\.)(?>\.?[a-zA-Z\d!#$%&'*+\-/=?^_`{|}~]+)+|"((?=[\x01-\x
    7f])[^"\\]|\\[\x01-\x7f])*")@(((?!-)[a-zA-Z\d\-]+(?<!-)\.)+[a-zA-Z]{2,}|\[(((?(?<
    !\[)\.)(25[0-5]|2[0-4]\d|[01]?\d?\d)){4}|[a-zA-Z\d\-]*[a-zA-Z\d]:((?=[\x01-\x7f])
    [^\\\[\]]|\\[\x01-\x7f])+)\])(?(angle)>)$
    

    #21楼

    使用正则表达式可能是最好的方法。 您可以在此处看到大量测试(取自

    function validateEmail(email) {
        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,}))$/;
        return re.test(String(email).toLowerCase());
    }
    

    这是接受unicode的常规表达式的示例:

    var re = /^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;
    

    但是请记住,不应该只依赖JavaScript验证。 可以轻松禁用JavaScript。 这也应该在服务器端进行验证。

    这是上述操作的一个示例:

     function validateEmail(email) { 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,}))$/; return re.test(email); } function validate() { var $result = $("#result"); var email = $("#email").val(); $result.text(""); if (validateEmail(email)) { $result.text(email + " is valid :)"); $result.css("color", "green"); } else { $result.text(email + " is not valid :("); $result.css("color", "red"); } return false; } $("#validate").on("click", validate); 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <form> <p>Enter an email address:</p> <input id='email'> <button type='submit' id='validate'>Validate!</button> </form> <h2 id='result'></h2> 


    #22楼

    正则表达式更新2018! 尝试这个

    let val = 'email@domain.com';
    if(/^[a-z0-9][a-z0-9-_\.]+@([a-z]|[a-z0-9]?[a-z0-9-]+[a-z0-9])\.[a-z0-9]{2,10}(?:\.[a-z]{2,10})?$/.test(val)) {
       console.log('passed');
    }
    

    打字稿版本已完成

    //
    export const emailValid = (val:string):boolean => /^[a-z0-9][a-z0-9-_\.]+@([a-z]|[a-z0-9]?[a-z0-9-]+[a-z0-9])\.[a-z0-9]{2,10}(?:\.[a-z]{2,10})?$/.test(val);
    

    更多信息https://git.io/vhEfc


    #23楼

    哇,这里有很多复杂性。 如果您只想捕获最明显的语法错误,我将执行以下操作:

    ^\S+@\S+$
    

    它通常会捕获用户所犯的最明显的错误,并确保表单最正确,这就是JavaScript验证的全部内容。


    #24楼

    使用单行正则表达式无法正确实现符合RFC的电子邮件地址验证。 我在PHP中找到最佳解决方案的文章是什么是有效的电子邮件地址? 。 显然,它已被移植到Java。 我认为该功能过于复杂,无法在JavaScript中移植和使用。 JavaScript / node.js端口: https ://www.npmjs.com/package/email-addresses。

    一个好的做法是在客户端上验证数据,但在服务器上仔细检查验证。 考虑到这一点,您可以简单地在客户端上检查字符串是否看起来像有效的电子邮件地址,然后在服务器上执行严格检查。

    这是我用来检查字符串是否看起来像有效邮件地址的JavaScript函数:

    function looksLikeMail(str) {
        var lastAtPos = str.lastIndexOf('@');
        var lastDotPos = str.lastIndexOf('.');
        return (lastAtPos < lastDotPos && lastAtPos > 0 && str.indexOf('@@') == -1 && lastDotPos > 2 && (str.length - lastDotPos) > 2);
    }
    

    说明:

    • lastAtPos < lastDotPos :Last @应该在last之前. 因为@不能是服务器名称的一部分(据我所知)。

    • lastAtPos > 0 :最后一个@之前应该有一些(电子邮件用户名)。

    • str.indexOf('@@') == -1 :地址中不应有@@ 。 即使@显示为电子邮件用户名中的最后一个字符,也必须将其引号引起来, "应位于该@和地址中的最后一个@之间。

    • lastDotPos > 2 :最后一个点之前至少应包含三个字符,例如a@b.com

    • (str.length - lastDotPos) > 2 :最后一个点后应有足够的字符以形成两个字符的域。 我不确定是否需要括号。


    #25楼

    HTML5本身具有电子邮件验证功能。 如果您的浏览器支持HTML5,则可以使用以下代码。

    <form><input type="email" placeholder="me@example.com" required>
        <input type="submit">
    </form>
    

    jsFiddle链接

    根据HTML5规范

    有效的电子邮件地址是与以下ABNF的email产生匹配的字符串,该字符串的字符集为Unicode。

     email = 1*( atext / "." ) "@" label *( "." label ) label = let-dig [ [ ldh-str ] let-dig ] ; limited to a length of 63 characters by RFC 1034 section 3.5 atext = < as defined in RFC 5322 section 3.2.3 > let-dig = < as defined in RFC 1034 section 3.5 > ldh-str = < as defined in RFC 1034 section 3.5 > 

    此要求是对RFC 5322的故意违反 ,RFC 5322定义了同时太严格(在“ @”字符之前),太模糊(在“ @”字符之后)和太松散(允许注释)的电子邮件地址语法。 ,空白字符和引号引起的字符串(大多数用户不熟悉的方式)在此处具有实际用途。

    以下与JavaScript和Perl兼容的正则表达式是上述定义的实现。

     /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/ 

    #26楼

    在决定使用正则表达式验证电子邮件时,您需要了解一些内容: 这可能不是一个好主意 。 一旦您对此有所了解,就有许多实现可以使您半途而废, 本文对它们进行了很好的总结。

    简而言之,唯一可以绝对肯定地确定用户输入的实际上是电子邮件的唯一方法是实际发送电子邮件并查看发生了什么。 除此之外,所有这些只是猜测。


    #27楼

    这是从http://codesnippets.joyent.com/posts/show/1917被盗的

    email = $('email');
    filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    if (filter.test(email.value)) {
      // Yay! valid
      return true;
    }
    else
      {return false;}
    

    #28楼

    很难使电子邮件验证程序100%正确。 使其正确的唯一真实方法是向该帐户发送测试电子邮件。 也就是说,有一些基本的检查可以帮助确保您得到的东西合理。

    一些需要改进的地方:

    代替新的RegExp ,只需尝试将regexp编写如下:

    if (reg.test(/@/))
    

    其次,检查以确保句号在@符号后面,并确保@ s和句点之间有字符。


    #29楼

    您不应使用正则表达式来验证输入字符串是否为电子邮件。 它太复杂了,无法涵盖所有​​情况。

    现在,由于您只能涵盖90%的情况,因此请编写以下内容:

    function isPossiblyValidEmail(txt) {
       return txt.length > 5 && txt.indexOf('@')>0;
    }
    

    您可以对其进行优化。 例如,“ aaa @”有效。 但是总的来说,您的主旨是。 并且不要被带走……一个简单的90%解决方案要比不起作用的100%解决方案好。

    世界需要更简单的代码...


    #30楼

    对于需要真正简单验证的人,我对Jaymon的答案做了一些修改:

    anystring@anystring.anystring

    正则表达式:

    /\S+@\S+\.\S+/
    

    JavaScript函数示例:

    function validateEmail(email) 
    {
        var re = /\S+@\S+\.\S+/;
        return re.test(email);
    }
    
    展开全文
  • Laravel 邮箱层是一个轻量级的 Laravel 包装器,可用于通过邮箱层 API验证电子邮件地址。 该软件包支持缓存,以便您可以立即开始验证电子邮件地址。 安装 要求 该软件包已经过开发和测试,可满足以下最低要求: ...
  • validate_email, Validate_email验证电子邮件地址是否有效并且确实存在 Validate_emailValidate_email是 python的包,它检查电子邮件是否有效,格式正确,确实存在。安装首先,你必须:pip install validate_email要...
  • 有许多电子邮件地址验证模块,但是似乎没有一个模块可以检查健全的电子邮件地址。 这一个。 如果您不同意,请并说服我为什么。 安装 npm install sane-email-validation 用法 const isEmail = require ( 'sane-...
  • 默认情况下,它会针对常规用法(用户电子邮件地址的首选格式)进行验证。 可以将其配置为针对RFC“标准”格式,常见的电子邮件服务提供商格式进行验证,并执行DNS验证。 使用email_address验证用户电子邮件地址会...
  •  * regex.cpp - 用正则表达式验证电子邮件地址  *  * C++11标准 STL正则表达式  *  *  * Copyright 叶剑飞 2012  *  * 编译命令:  * cl regex.cpp /EHsc /link /out:regex.exe  *  */ #...

    我们最经常遇到的验证,就是电子邮件地址验证。网站上常见。各种网页脚本也都常用“正则表达式”(regular expression)对我们输入的电子邮件地址进行验证,判断是否合法。有的还能分解出用户名和域名。现在用C++语言实现一下电子邮件地址验证程序,用的是C++ 11标准新增加的STL正则表达式。

      源代码如下,该代码已在Visual Studio 2010上验证通过。g++ 4.6不支持C++ 11STL正则表达式,g++ 4.6上编译可以通过,但运行时错误,抛出regex_error异常。因此,如果要在g++ 4.6上使用正则表达式,请用GNU正则表达式库或者用boost正则表达式库。

    /*

     * regex.cpp - 用正则表达式验证电子邮件地址
     *
     *  C++11标准  STL正则表达式
     *
     *
     *              Copyright  叶剑飞 2012
     *
     * 编译命令:
     *         cl regex.cpp /EHsc /link /out:regex.exe
     *
     */


    #include <iostream>
    #include <cstdlib>
    #include <string>
    #include <regex>  // regular expression 正则表达式


    using namespace std;


    int main ( )
    {
        string email_address;
        string user_name, domain_name;


        regex pattern("([0-9A-Za-z\\-_\\.]+)@([0-9a-z]+\\.[a-z]{2,3}(\\.[a-z]{2})?)");
        // 正则表达式,匹配规则:
        // 第1组(即用户名),匹配规则:0至9、A至Z、a至z、下划线、点、连字符之中
        // 的任意字符,重复一遍或以上
        // 中间,一个“@”符号
        // 第二组(即域名),匹配规则:0至9或a至z之中的任意字符重复一遍或以上,
        // 接着一个点,接着a至z之中的任意字符重复2至3遍(如com或cn等),
        // 第二组内部的一组,一个点,接着a至z之中的任意字符重复2遍(如cn或fr等)
        // 内部一整组重复零次或一次




        // 输入文件结尾符(Windows用Ctrl+Z,UNIX用Ctrl+D)结束循环
        while ( cin >> email_address ) 
        {
            if ( regex_match( email_address, pattern ) )
            {
                cout << "您输入的电子邮件地址合法" << endl;


                // 截取第一组
                user_name = regex_replace( email_address, pattern, string("$1") );


                // 截取第二组
                domain_name = regex_replace( email_address, pattern, string("$2") );


                cout << "用户名:" << user_name << endl;
                cout << "域名:" << domain_name << endl;
                cout << endl;
            }
            else
            {
                cout << "您输入的电子邮件地址不合法" << endl << endl;
            }
        }
        return EXIT_SUCCESS;
    }
    展开全文
  • boost正则表达式 验证电子邮件地址

    千次阅读 2015-04-15 22:12:28
    我们最经常遇到的验证,就是电子邮件地址验证。网站上常见。各种网页脚本也都常用“正则表达式”(regular expression)对我们输入的电子邮件地址进行验证,判断是否合法。有的还能分解出用户名和域名。现在用C++...

      我们最经常遇到的验证,就是电子邮件地址验证。网站上常见。各种网页脚本也都常用“正则表达式”(regular expression)对我们输入的电子邮件地址进行验证,判断是否合法。有的还能分解出用户名和域名。现在用C++语言实现一下电子邮件地址验证程序,用的是boost正则表达式库。

      源代码如下,该代码已在g++ 4.6上验证通过。

    /*
     * regex.cpp - 用正则表达式验证电子邮件地址
     *
     *            boost正则表达式
     *
     *
     *              Copyright  叶剑飞 2012
     * 编译命令:
     *     g++ regex.cpp -o regex -Wall -lboost_regex
     *
     */
    
    #include <iostream>
    #include <cstdlib>
    #include <string>
    #include <boost/regex.hpp>  // regular expression 正则表达式
    
    using namespace std;
    using namespace boost;
    
    int main ( )
    {
        string email_address;
        string user_name, domain_name;
    
        regex pattern("([0-9A-Za-z\\-_\\.]+)@([0-9a-z]+\\.[a-z]{2,3}(\\.[a-z]{2})?)");
        // 正则表达式,匹配规则:
        // 第1组(即用户名),匹配规则:0至9、A至Z、a至z、下划线、点、连字符之中
        // 的任意字符,重复一遍或以上
        // 中间,一个“@”符号
        // 第二组(即域名),匹配规则:0至9和a至z之中的任意字符重复一遍或以上,
        // 接着一个点,接着a至z之中的任意字符重复2至3遍(如com或cn等),
        // 第二组内部的一组,一个点,接着a至z之中的任意字符重复2遍(如cn或fr等)
        // 内部一整组重复零次或一次
    
    
        // 输入文件结尾符(Windows用Ctrl+Z,UNIX用Ctrl+D)结束循环
        while ( cin >> email_address ) 
        {
            if ( regex_match( email_address, pattern ) )
            {
                cout << "您输入的电子邮件地址合法" << endl;
    
                // 截取第一组
                user_name = regex_replace( email_address, pattern, string("$1") );
    
                // 截取第二组
                domain_name = regex_replace( email_address, pattern, string("$2") );
    
                cout << "用户名:" << user_name << endl;
                cout << "域名:" << domain_name << endl;
                cout << endl;
            }
            else
            {
                cout << "您输入的电子邮件地址不合法" << endl << endl;
            }
        }
        return EXIT_SUCCESS;
    }
    展开全文
  • 我们最经常遇到的验证,就是电子邮件地址验证。网站上常见。各种网页脚本也都常用“正则表达式”(regular expression)对我们输入的电子邮件地址进行验证,判断是否合法。有的还能分解出用户名和域名。现在用...

      我们最经常遇到的验证,就是电子邮件地址验证。网站上常见。各种网页脚本也都常用“正则表达式”(regular expression)对我们输入的电子邮件地址进行验证,判断是否合法。有的还能分解出用户名和域名。现在用JavaScript语言实现一下电子邮件地址验证程序,用的是JavaScript语言的正则表达式库。

      源代码如下,该网页已在IE、Firefox、Chrome上验证通过:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" lang="zh" xml:lang="zh">
    <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
    <title>电子邮件地址验证程序</title>
    <script language="javascript" type="text/javascript">
    //<![CDATA[
        function check( email_address )
        {
            var regex = /^([0-9A-Za-z\-_\.]+)@([0-9a-z]+\.[a-z]{2,3}(\.[a-z]{2})?)$/g;
            if ( regex.test( email_address ) )
            {
                
                var user_name = email_address.replace( regex, "$1" );
                var domain_name = email_address.replace( regex, "$2" );
                var alert_string = "您输入的电子邮件地址合法\n\n";
                alert_string += "用户名:" + user_name + "\n";
                alert_string += "域名:" + domain_name;
                window.alert( alert_string );
                return true;
            }
            else
            {
                window.alert( "您输入的电子邮件地址不合法" );
                return false;
            }
        }
    //]]>
    </script>
    </head>
    <body style="text-align: center;">
    <h1>电子邮件地址验证程序</h1>
    请输入电子邮件地址:<input id="email_address" type="text" style="width: 300px;" /><br />
    <input type="button" value="验证电子邮件地址" onclick="return check(document.getElementById('email_address').value);" />
    </body>
    </html>
    展开全文
  • PHP正则表达式 验证电子邮件地址

    千次阅读 2015-04-15 22:12:38
    我们最经常遇到的验证,就是电子邮件地址验证。网站上常见。各种网页脚本也都常用“正则表达式”(regular expression)对我们输入的电子邮件地址进行验证,判断是否合法。有的还能分解出用户名和域名。现在用PHP...
  • POSIX正则表达式 验证电子邮件地址

    千次阅读 2015-04-15 22:12:19
    我们最经常遇到的验证,就是电子邮件地址验证。网站上常见。各种网页脚本也都常用“正则表达式”(regular expression)对我们输入的电子邮件地址进行验证,判断是否合法。有的还能分解出用户名和域名。现在用C语言...
  • 本文分步介绍了如何创建和使用正则表达式来确定字符串是否与特定模式匹配。正则表达式允许进行...在此示例中,我们将构造一个模式来验证电子邮件地址。 要求 下面的列表列出了推荐使用的硬件、 软件、 网络基础结构
  • 是一个PHP类,可以轻松用于验证电子邮件地址并确保其有效并且确实存在于邮件服务器上。 此类连接到邮件服务器,并检查邮箱是否存在。 博客文章: 说明: : 如何配置邮件服务器: : 如何安装(使用作曲家): ...
  • 验证电子邮件地址Valider的类

    千次阅读 2007-02-28 16:03:00
    //验证电子邮件地址using System;namespace Valider{ /// /// Valider 的摘要说明。 /// //定义开始验证事件委托 public delegate void VeginValidData(); //定义结束验证时间委托 public delegate ...
  • 我应该如何验证电子邮件地址

    千次阅读 2020-06-25 14:45:34
    在Android中验证电子邮件地址(例如来自用户输入字段)的好技术是什么? org.apache.commons.validator.routines.EmailValidator doesn't seem to be available. org.apache.commons.validator.routines....
  • 使用这种类型的字段而不是一般的文本字段浏览器使用正则表达式来检查用户已经事实上输入一个电子邮件地址。这是否意味着用户不能输入一个虚假的电子邮件地址吗?没有。但你不必担心用户输入一个逗号,而不是一段时间,...
  • 已经为另一个apple id 验证电子邮件地址   因为我之前注册过一个ID,并使用了现在这个邮箱作为备用邮箱,导致这个邮箱不能注册。 所以登录了https://appleid.apple.com/ 去备用邮箱里删除现在这个邮箱,再次注册...
  • <p>How can an email address be validated in JavaScript? 转载于:https://stackoverflow.com/questions/46155/how-to-validate-an-email-address-in-javascript</p>
  • NULL 博文链接:https://jyao.iteye.com/blog/1061512
  • 请在帐户属性中验证电子邮件地址。 响应服务器: 553 xxx@etxch.com: Sender address rejected: not logged in”   解决方案: 因为JAVAeye好像不支持插入本地图片,所以只能附件形式上传图片&lt;!--...
  • 让我们继续讨论怎么验证一个email地址. 在一个完整的email地址中有三个部分: POP3 用户名 (在 '@' 左边的一切), '@', 服务器名(就是剩下那部分). 用户名可以含有大小写字母阿拉伯数字,句号 ('.'), 减号('-'), and ...
  • 我们最经常遇到的验证,就是电子邮件地址验证。网站上常见。各种网页脚本也都常用“正则表达式”(regular expression)对我们输入的电子邮件地址进行验证,... * regex.c - 用正则表达式验证电子邮件地址 * * POS
  • 转载于:https://my.oschina.net/dapsjj/blog/804262
  • 验证电子邮件地址的方法有多种,并且所有机制都必须符合最佳做法并提供适当的验证。 Truemail gem可帮助您通过正则表达式模式,DNS记录的存在以及当前电子邮件服务器上电子邮件帐户的真实存在来验证电子邮件。 ...
  • 本文指出了如何使用ASP在Exchange中验证电子邮件地址
  • 跪求电子邮件地址验证程序 毕业论文题目 一点头绪都没有 完全不会写啊 跪求各位大神帮助 用JAVA写 最好详细些 加上注释 本人刚学JAVA不到三个月 小白一枚 求帮助

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 63,696
精华内容 25,478
关键字:

怎么验证电子邮件地址