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

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

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

  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 = ['[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]'];

var res = emailArr.map(function (item) {
  if (validateEmail(item)) {
    return item + ' 有效';
  }
  return item + ' 无效';
});
// 测试用例均有效
console.log(res);

你可能感兴趣的:(书写一个用于验证邮箱的正则表达式)