纳扎尔蓬克/电子邮件地址

电子邮件地址解析和净化。

1.0.6 2023-08-24 11:30 UTC

This package is auto-updated.

Last update: 2024-09-24 13:53:45 UTC


README

许多开发者难以验证电子邮件。有些人只是使用正则表达式,其他人放弃检查,还有一些人绘制表格

一点哲学

电子邮件已经走过了很长的路,留下了痕迹。但通常,不需要维护电子邮件的所有功能。大多数情况下,用户使用电子邮件服务。因此,从它们出发是一个明智的想法。

因此,检查将非常简单

  • 清除字符串中的空格
  • 按@分割成两部分
  • 检查剩余的域名部分
  • 如果找不到提供者,则按需处理

可能出错的是什么?

一些电子邮件服务提供商有一个有趣的特点 - 无意义的点。也就是说 example@gmail.come.x.a.m.p.l.e@gmail.com 是同一个地址。相应地,如果用户注册了多个账户,然后决定绑定 oauth,那么可能会很有趣。

此外

一些电子邮件服务提供商有一个有趣的特点 - 忽略加号后的所有内容。也就是说 example@gmail.comexample+spam@gmail.com 是同一个地址。相应地,如果用户注册了多个账户,然后决定绑定 oauth,那么可能会很有趣。

域名

一些电子邮件服务提供商忽略域名的差异。也就是说 example@gmail.comexample@googlemail.com 是同一个地址。相应地,如果用户注册了多个账户,然后决定绑定 oauth,那么可能会很有趣。

非常聪明的用户

搭建自己的服务器或使用一次性邮箱并不困难。因此,不可避免地会出现完全有效地址格式的问题。

"very.(),:;<>[]\".VERY.\"very@\\ \"very\".unusual"@[IPv6:2001:0db8:85a3:0000:0000:8a2e:0370:7334]

但这个问题超出了本文的范围,所以我们继续。

地址格式

忽略域名后,我们剩下用户部分需要根据服务本身允许的格式进行检查。可以采取两种方法

  • 收集最自由的正则表达式,不再烦恼。
  • 或者,为了不向明显无效的地址发送字节,根据表格检查每个禁止的序列。

如何处理取决于你,而表格如下所示。

  • min 最小长度
  • max 最大长度
  • chars 允许的字符
  • first 允许的第一个字符
  • last 允许的最后一个字符
  • !. 检查时是否删除点
  • .. 是否允许两个点连续出现
  • ._ 点和下划线是否可以相邻
  • .- 点和破折号是否可以相邻
  • .0 点可以与数字相邻吗
  • __ 是否允许两个下划线连续出现
  • _- 下划线和破折号是否可以相邻
  • -- 是否允许两个破折号连续出现
  • .+ 字符串中是否可以出现多个点
  • + 是否忽略 + 符号之后的全部内容
  • l 后面需要至少一个字母的非字母字符数量
  • t 是否手动测试过数据

域名

  • d 所有域名是否都绑定到一个账户上