美文网首页JavaScript 实用技巧
书写一个用于验证邮箱的正则表达式

书写一个用于验证邮箱的正则表达式

作者: 奕玄 | 来源:发表于2019-03-12 20:49 被阅读0次

    首来看几个合法邮箱的例子:

    • 1234@qq.com(纯数字)
    • wang@126.com(纯字母)
    • wang123@126.com(数字、字母混合)
    • wang123@vip.163.com(多级域名)
    • wang_email@outlook.com(含下划线 _
    • wang.email@gmail.com(含英语句号 .

    根据对以上邮箱的观察,可将邮箱分为两部分(“@”左边和右边部分)来进行分析:

    1. 左边部分可以有数字、字母、下划线(_)和英语句号(.),因此可以表示成:[A-Za-z0-9]+([_\.][A-Za-z0-9]+)*
    2. 右边部分是域名,按照域名的规则,可以有数字、字母、短横线(-)和英语句号(.),另外顶级域名一般为 2 ~ 6 个英文字母(比如“cn”、“com”、“site”、“group”、“online”),故可表示为:([A-Za-z0-9\-]+\.)+[A-Za-z]{2,6}

    注意两点:

    • 考虑到匹配邮箱时字符串的一头一尾不能有其它字符,故要加上开始标志元字符 ^ 和结束标志元字符 $
    • 英语句号(.)是正则表达式的元字符,因此要进行转义(\.)。

    用于邮箱验证的函数及测试用例如下:

    /* 用于邮箱验证的函数 */
    function validateEmail (email) {
      // 邮箱验证正则
      var reg = /^[A-Za-z0-9]+([_\.][A-Za-z0-9]+)*@([A-Za-z0-9\-]+\.)+[A-Za-z]{2,6}$/;
      return reg.test(email);
    }
    
    // 测试用例
    var emailArr = ['1234@qq.com', 'wang@126.com', 'wang123@126.com', 'wang123@vip.163.com', 'wang_email@outlook.com', 'wang.email@gmail.com'];
    
    var res = emailArr.map(function (item) {
      if (validateEmail(item)) {
        return item + ' 有效';
      }
      return item + ' 无效';
    });
    // 测试用例均有效
    console.log(res);
    

    相关文章

      网友评论

        本文标题:书写一个用于验证邮箱的正则表达式

        本文链接:https://www.haomeiwen.com/subject/cyjopqtx.html