Java Email Validation

2025年3月29日 | 阅读 4 分钟

在设计表单时,电子邮件扮演着重要的角色。电子邮件可以是我们的用户名或登录 ID。电子邮件有其自身的结构,在使用之前,我们需要对其进行验证。在 Java 中,电子邮件验证是通过使用正则表达式来执行的。

在任何需要电子邮件地址作为注册阶段必需信息的应用程序中,都需要进行电子邮件验证。

我们可以通过五种方法使用正则表达式执行电子邮件验证。

  1. 验证电子邮件的最简单正则表达式。
  2. 对用户名部分添加限制。
  3. RFC 5322 允许的电子邮件验证。
  4. 正则表达式,用于限制电子邮件中的前导、尾随或连续的点。
  5. 正则表达式,用于限制顶级域中的字符数。
Java Email Validation

验证电子邮件的最简单正则表达式

正则表达式 ^(.+)@(.+)$ 是最简单的正则表达式,它只检查 @ 符号。它不关心 '@' 符号之前和之后的字符。让我们举例说明它是如何验证电子邮件地址的。

EmailValidation1.java

输出

Java Email Validation

对用户名部分添加限制

正则表达式 "^[A-Za-z0-9+_.-]+@(.+)$" 还会检查电子邮件地址的用户名部分。为了检查电子邮件的用户名部分,我们使用正则表达式添加了一些限制。正则表达式 "^[A-Za-z0-9+_.-]+@(.+)$", ^[A-Za-z0-9+_.-] 定义了以下限制。

  1. 允许 A-Z 字符
  2. 允许 a-z 字符
  3. 允许 0-9 数字
  4. 此外,电子邮件还可以包含点 (.)、下划线 (_) 和连字符 (-)。
  5. 不允许其他字符。

让我们举例说明它是如何验证电子邮件地址的。

EmailValidation2.java

输出

Java Email Validation

RFC 5322 允许的电子邮件验证

要验证 RFC 5322 允许的电子邮件,我们使用 "^[a-zA-Z0-9_!#$%&'*+/=?`{|}~^.-]+@[a-zA-Z0-9.-]+$" 正则表达式。它使用了 RFC 规定的电子邮件消息格式允许的所有字符。在这些字符中,一些字符在直接从用户输入传递到 SQL 语句时会带来风险。这些字符主要是管道符 (|)、单引号 (') 等。

让我们举例说明它是如何验证电子邮件地址的。

EmailValidation3.java

输出

Java Email Validation

限制电子邮件的尾随、连续和前导点

正则表达式 "^[a-zA-Z0-9_!#$%&'*+/=?`{|}~^-]+(?:\\.[a-zA-Z0-9_!#$%&'*+/=?`{|}~^-]+)*@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$" 限制我们添加连续的点、尾随点和前导点。电子邮件可以在本地部分和域名中包含多个点,但不允许连续的点。我们的电子邮件也不能以点开头或结尾。该正则表达式也根据这三个条件验证电子邮件。

让我们举例说明它是如何验证电子邮件地址的。

EmailValidation4.java

输出

Java Email Validation

限制电子邮件在顶级域中输入的字符数

正则表达式 "^[\\w!#$%&'*+/=?`{|}~^-]+(?:\\.[\\w!#$%&'*+/=?`{|}~^-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,6}$" 检查域名中是否至少有一个点,并且点之后只包含字母。顶级域应该只有两到六个字母,这一点也由这个正则表达式进行检查。

让我们举例说明它是如何验证电子邮件地址的。

EmailValidation5.java

输出

Java Email Validation

以上讨论的所有正则表达式都用于电子邮件验证。最后一个正则表达式使用更多条件和规则来严格验证电子邮件。在 Java 中,我们通常使用最后一个讨论的正则表达式来验证电子邮件。