问题是,怎么做?
有几种解决方案,但其中一种是使用电子邮件 regex 模式。
在本指南中,我们将解释什么是电子邮件 regex 模式,以及为什么它是验证电子邮件地址的基础。最后,您将了解电子邮件 regex 的确切工作原理,以及它如何确保您的数据保持最新。
电子邮件验证中的 regex 基础知识
正则表达式(regex)是为定义搜索模式而创建的字符序列。它们有很多用途。
假设您正在开发一个电子商务平台,需要检查客户是否在表单中输入了正确的数据,如有效的电子邮件地址、电话号码或邮政编码。Regex 可以识别输入是否符合预期格式。
或者您需要在较大的文本中查找日期,或者提取特定的单词。regex 的结构化工作方式简化了这一过程。
在编程中呢?正则表达式可以提取特定的单词、数据和文件,或确保代码格式化。在JavaScript、Python 或 PHP 等编程语言中使用这种工具也就不足为奇了。
在电子邮件验证中,regex 会检查用户输入是否符合电子邮件地址的正确结构。
为什么 regex 对电子邮件验证至关重要?
由于电子邮件地址有特定的格式,因此 regex 可用于制作与这种结构相匹配的模式,并验证电子邮件的格式是否正确。如果电子邮件缺少正确的语法,如缺少 @ 符号或包含错误的字符,就会立即被标记。
这是必要的,原因有几个:
- 使用 regex,可以减少接受无效或畸形电子邮件的机会。这样,您的数据库中就会充满有效的电子邮件地址,并提高通信效率。
- 正确格式化的电子邮件地址意味着更少的退信和更少的电子邮件进入垃圾邮件文件夹。
- 如果用户输入的电子邮件有误,Regex 可以立即通知用户。它会提示用户在提交前纠正错误。
正如您所看到的,详细的电子邮件 regex 模式有助于保持数据的准确性,提高电子邮件通信的可靠性。它还能降低无效电子邮件地址或误报进入系统的风险。
如果实施得当,它可以使您的电子邮件列表保持清洁, 提高发送能力,并保护数据完整性。
电子邮件 regex 模式及其组件
在为电子邮件地址设计 regex 模式时,您需要涵盖从本地部分允许使用的字符(如字母、数字和某些特殊字符)到正确的域名部分和 TLD 的所有内容。
下面是一个基本电子邮件 regex 模式的示例:
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
解释:
- ^[a-zA-Z0-9._%+-]+ 允许本地部分(@ 之前)包含字母、数字和一些特殊字符。
- @[a-zA-Z0-9.-]+包含”@”并讨论 域部分 ,以便域包含正确的字符。
- \[a-zA-Z]{2,}$确保有效的顶级域名,如 .com 或 .net。
让我们来分析一下上述组成部分:
- 本地部分:是电子邮件中 @ 符号之前的部分。它可以包括字母(a-z、A-Z)、数字(0-9)和特定的特殊字符,如._ % + -.
该部分必须至少包含一个字符,并且不能以点开头或结尾,也不能包含连续的点。
示例: bouncer7 - @ 符号:这很简单。所有有效的电子邮件地址都有一个 @。它位于本地部分之后,域名部分之前。
- 领域部分:在这里,情况变得更加复杂。在 @ 之后,电子邮件地址必须包含正确的域名,其中可以包含字母、数字和连字符 (-)。
该部分不允许使用其他特殊字符。
例如:支持 - 顶级域(TLD):最后一个点之后的部分(如 .com 或 .org)。长度通常在 2 到 6 个字符之间,仅由字母组成。
例如:com
将所有信息组合在一起,你就可以创建一个有效的电子邮件地址:[email protected]。
如果设置了良好的规则,电子邮件正则表达式就会起作用,电子邮件地址验证就会成功。
用于电子邮件验证的常见 regex 模式
好了,既然你已经了解了基础知识,让我们深入探讨一下这个主题,看看不同的 regex 模式、它们的优势和潜在的局限性。
基本电子邮件 regex 模式
您已经知道基本的电子邮件 regex:
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
优势:
- 对于常见的使用情况,它既简单又高效。
- 它可以捕捉基本错误,如缺少”@”、TLD 或不正确的特殊字符。
局限性:
- 可能允许某些无效的电子邮件地址,如带有连续句号的地址(如 “[email protected]”)。
- 它不处理可能包含 Unicode 字符的国际化域名 (IDN)。
高级 regex 可进行更复杂的验证
为了实现更强大的检查功能,开发人员通常会使用更详细的模式。它们建立在基本 regex 的基础上,但增加了负前瞻性,以防止电子邮件地址的本地部分出现连续的句号(”..”)。
例如
^(?!.*\.\.)[A-Za-z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,63}$
优势:
- 它通过增加更多限制来解决较简单模式的一些局限性。
- 它可以检查更严格的顶级域(2-63 个字符)。
局限性:
- 它可能无法捕捉到所有潜在的问题。
- 它可能仍然无法正确处理 IDN。
国际化的复杂模式
如果要处理国际电子邮件地址,则需要更复杂的模式。它扩展了验证功能,在域名部分包含 Unicode 字符,因此适用于 IDN。
例如
^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z\u00A1-\uFFFF]{2,63}$
优势:
- 对于非拉丁字母国家的用户来说是个不错的选择。
- 它可以容纳不断扩大的有效域名列表。
局限性:
- 这比较复杂,可能会稍微影响性能。
- 要管理所有边缘情况可能仍然很困难,尤其是在处理多种语言时。
不同 regex 模式产生的不同结果
使用不同的 regex 模式会导致不同的结果,具体取决于设计的严格程度。
例如,基本模式可能接受不正确的 “[email protected]”,但更严格的模式会拒绝接受。
另一方面,如果您的系统与国际客户打交道,使用不支持 IDN 的模式可能会错误地拒绝来自域名中包含非 ASCII 字符(如 “bouncer@exämple.com”)的用户的有效电子邮件地址。
关于如何选择正确的 regex 模式,我们有什么技巧吗?
当然!
- 如果您的用户群主要是国内用户,不需要处理很多国际电子邮件地址,那么使用基本的 regex 可能就足够了。
- 如果您的服务是全球性的,则应选择支持国际化域名和其他复杂现代电子邮件地址的模式。
- 使用各种有效和无效地址测试 regex,检查是否捕获了太多的误报(接受了错误的电子邮件)或误报(拒绝了准确的电子邮件)。
- 考虑将 regex 与其他验证方法结合使用,如检查 MX 记录或集成第三方电子邮件验证服务,以进行更深层次的验证。
创建完美的电子邮件 regex 模式
如果您想制作完美的 regex 模式,请根据自己的需要进行定制。
以下是示例步骤。
步骤 1:了解电子邮件结构
始终遵循结构规则。好吧,你可以根据自己的具体要求定制 regex,但规则就是规则。
确保了解本地部分和域部分可以包含哪些内容,不能包含哪些内容,可以使用哪些字符,允许哪些配置等。
第 2 步:根据需要定制 regex 模式
在此阶段,您将允许某些域、处理特殊字符并排除一次性电子邮件地址。
- 允许某些域名
要只接受来自特定域名的电子邮件,可以定制 regex 模式来限制域名部分。任何不以特定域名结尾的电子邮件都会被拒收,这在企业或受控环境中非常有用。
例如,如果您只允许来自”@company.com “和”@partner.com “的电子邮件,您的 regex 将如下所示:
^[A-Za-z0-9._%+-]+@(company\.com|partner\.com)$
- 处理特殊字符
电子邮件地址的本地部分通常包含特殊字符,如点或连字符。但如果只允许输入某些字符或排除其他字符,该怎么办呢?
您可以修改 regex 中的字符类别,只匹配您认为可以接受的字符:
^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$
相反,如果要限制某些字符(如不允许使用连字符),可以将它们从模式中删除:
^[A-Za-z0-9._%+]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$
- 排除一次性电子邮件地址
如果您使用的是一次性电子邮件地址,您需要阻止它们在系统中使用。
您可以维护一个与一次性电子邮件相关的域名黑名单,并将其整合到您的 regex 模式中。例如
^[A-Za-z0-9._%+-]+@(?!mailinator\.com|tempmail\.com)[A-Za-z0-9.-]+\.[A-Za-z]{2,}$
步骤 3:兼顾严格性和灵活性
制作电子邮件正则表达式模式的最大挑战之一就是在过于严格或过于宽松之间找到平衡。
过于严格的模式可能会错误地拒绝有效地址,导致用户失望或失去机会。
反之,过于宽松的模式可能会接受无效的电子邮件地址。您可能会收到更多被退回的电子邮件,降低送达率,并损害系统的数据完整性。
尽量选择既符合要求又不过分死板或放任的中间路线。从基本的 regex 模式开始,然后允许特殊字符、不寻常的域名或您需要的变化。
制作有效 regex 模式的专家提示
- 使用锚点进行精确匹配。^ 和 $ 锚点会强制 regex 模式匹配整个电子邮件地址,而不仅仅是其中的一部分。
- 利用字符类,如 \w(单词字符)和 \d(数字字符),而不是写出 [a-zA-Z0-9] 这样的单个范围。这样可以简化模式,使其更易于管理。
- 如果需要允许或阻止特定域(如排除一次性电子邮件服务),可在模式中为这些域添加条件检查。
- 不断更新 regex。 电子邮件标准不断变化,因此请确保您的 regex 模式与最新的电子邮件标准和域结构保持同步。
- 使用电子邮件验证最佳实践。密切关注电子邮件验证最佳实践的更新,并相应调整您的模式。
- 使用多个验证层。Regex 是结构验证的好帮手,但正如我们前面所说,您可以将它与其他方法结合起来。MX 记录、基于 API 的服务,或者–有很多方法可以使地址格式正确。
测试电子邮件 regex 模式并排除故障
有时,您的 regex 并不完全按照预期工作。
例如,如果模式没有捕捉到它应该捕捉到的东西,就尝试简化方法,并以较小的增量进行测试。
- 分解每个部分–本地部分、域和顶级域 (TLD),看看哪里可能出错。
- 注意丢失转义字符或不正确使用通配符– 在 regex 中具有特定含义的转义特殊字符(如 .或 +)。检查通配符(如 * 或 +)的应用是否正确。通配符如果使用不当,很容易导致意外匹配。
- 测试–使用在线 regex 测试工具单独验证每个组件,如本地部分或域。然后,在确信每个部分都正常运行后,将它们组合起来,测试整个模式。
这样,您就可以摆脱误报/误报、不一致的 TLD、连续的点、无法识别的特殊字符等问题,并找到”@”符号等缺失部分。
你可以使用专为 regex 测试设计的工具,如 Regex101、RegExr 和 RegexPal。在这里输入电子邮件示例和你的 regex 模式,就能清楚地看到哪些地方可能会失败。
另一个不错的选择是使用 Bouncer 等工具。虽然检查 regex 是有益的,但它并不能证实您所使用的是真实的电子邮件地址。
因此,您需要电子邮件地址验证服务,它能告诉您是否在联系真实的收件人。
总之,在部署之前
- 不要急于检查 regex 模式。
- 测试 regex 模式的每个组件。
- 使用工具检查 regex 是否正常工作。
- 利用更先进的系统(如 Bouncer)来验证您连接的是否是真人。
超越 regex,增强电子邮件验证功能
因此,正则表达式能识别格式正确的电子邮件地址,但在验证 该电子邮件是否可送达或是否存在时,正则表达式就显得力不从心了。毕竟,如果域名不活动或电子邮件收件箱不存在,电子邮件可能会通过正则表达式测试,但仍然无效。
这就是 Bouncer等服务的 用武之地。
Bouncer 超越了正则表达式所能实现的功能,提供 电子邮件验证服务 ,确认电子邮件地址是否真实有效。
该平台不只是检查电子邮件的结构。它还能与收件人的服务器连接,确保电子邮件可以送达。
这可确保您的营销活动或事务性电子邮件能够进入真正的收件箱,而不仅仅是电子邮件 regex 模式认为 “有效 “的任何地方。
Bouncer 的主要特点
- 不只是验证 – Bouncer可以验证电子邮件语法、运行 DNS 和 MX 记录检查,并利用专有的人工智能算法与 SMTP 服务器协商,为您提供最准确的结果。
- 风险评估–它甚至能深入分析有风险的电子邮件地址或接受所有传入邮件的 “万能 “域。
- 一次性电子邮件检测–该系统可识别为临时使用而创建的一次性电子邮件地址。
- 测试和监控– Bouncer可以测试收件箱位置、测试电子邮件设置并监控封堵列表。
- 符合 GDPR标准 – Bouncer 完全符合 GDPR 标准。它对所有提交的电子邮件地址进行散列和匿名处理,让用户高枕无忧。
因此,该平台可以维护一个 干净的电子邮件列表,降低跳出率,并提高发送率。
像专家一样验证电子邮件地址
正则表达式是文本匹配、过滤特定模式、替换子串或经常验证用户输入的电子邮件地址的必备工具。
虽然 regex 可以对无效电子邮件地址进行基本过滤,但 Bouncer 可以确保您不会向根本不存在的收件箱发送邮件。更重要的是,它能自动完成这一切。
有了 Bouncer,您就不必胡乱编写代码、仔细检查字符或从头开始构建正则表达式了。不过,您仍然可以确保您处理的是真实有效的电子邮件地址。
利用 Bouncer ,看看该工具还能为您做些什么。
常见问题
什么是电子邮件 regex 模式?
正则表达式(regex)是为定义搜索模式而创建的字符序列。它在很多情况下都非常重要,包括文本匹配、过滤特定模式或验证电子邮件地址。
如何创建用于电子邮件验证的 regex 模式?
将电子邮件分解为本地部分和域。使用字符类、通配符和限制条件来正确匹配格式。您还可以为第一个或最后一个字符设置规则。
为什么我的 regex 模式无法捕获所有无效电子邮件?
您的 regex 可能过于宽松或过于严格。测试并调整转义字符的缺失或通配符的错误使用。
regex 能否验证电子邮件是否存在?
Regex 只检查格式,而不检查电子邮件是否存在。要验证电子邮件地址是否存在,您需要额外的电子邮件验证服务。
使用 regex 进行客户端和服务器端电子邮件验证有什么区别?
客户端验证可提供即时反馈,但服务器端可确保更强的安全性和提交后的验证。
如何测试电子邮件 regex 模式?
使用 Regex101 或 regexr.com等工具输入、修改并根据真实世界的电子邮件示例测试您的模式。
使用设计不当的 regex 模式有什么风险?
一个糟糕的 regex 可能会拒绝有效的电子邮件或允许无效的电子邮件。这会导致数据质量问题或用户失望。
如何在 regex 中处理国际化电子邮件地址?
支持非拉丁字符和使用 Unicode 字符类的顶级域,以涵盖更多变化。
验证电子邮件的最佳 regex 模式是什么?
没有十全十美的模式,但有一种普遍接受的模式,既能兼顾严格性和灵活性,又能涵盖最有效的格式。
regex 能否检测临时或一次性电子邮件地址?
Regex 无法直接检测一次性地址。将其与电子邮件验证服务搭配使用,可过滤掉此类电子邮件。
regex 在整个电子邮件验证过程中扮演什么角色?
Regex 是格式化检查的第一步。全面验证需要 DNS 查询和 SMTP 级验证。