<js><regex> 正则验证邮箱

597 阅读1分钟
const regex = /^(([a-zA-Z0-9]+[\w\-\.]*[a-zA-Z0-9]+)|[a-zA-Z0-9])+\@{1}(([a-zA-Z0-9]+[\w\-\.]*[a-zA-Z0-9]+)|[a-zA-Z0-9])+\.{1}(([a-zA-Z0-9]+[\w\-\.]*[a-zA-Z0-9]+)|[a-zA-Z0-9])+$/;

正则其实不难,难的是邮箱地址的规则究竟是怎样的,找了好久,没找到,只能靠自己。

通常我们见到的邮箱地址是这样的: xx@xx.xx,

但其实这样也合规: xxx.123_xxx@xxx.123_xxx.xxx123_x.xx (别怀疑,我问过专业的网络攻城狮关于域名的规则)。比如我曾用过的邮箱就有

lastName_firstName@cn.companyName.domain (er_miao@cn.18m.com)

所以,基本上,一个合格的邮箱地址必须:

  1. 从前面往后查找,必须有一个@
  2. 从后边往前查找,必须有一个.
  3. 用第一个@和最后一个.分成3部分,

        1)每一部分都允许 数字,字母,下划线_,点.

        2)每一部分开头和结尾都只能是数字或字母


P.S. 我没找到关于长度限制方面的资料

(欢迎指正)