电子邮件地址是在线通信的关键部分,并确保用户输入的电子邮件地址有效是任何Web应用程序的重要任务。在此博客文章中,我们将讨论如何根据官方RFC 5322标准中指定的规则在JavaScript中使用正则表达式来验证电子邮件地址。
首先,让我们看一下我们将用于验证的正则表达式:
const emailRegex = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;
乍一看,这种正则表达式可能看起来令人生畏,但实际上是由几个较小,更简单的正则表达式组成的,这些表达式组合在一起以形成完整的电子邮件地址验证模式。让我们分解:
/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@/
正则表达式的第一部分与电子邮件地址的本地部分匹配,该部分由用户名和域名组成(例如,john.doe@example.com中的John.doe)。正则表达式的这一部分允许本地部分包含字母,数字和一些特殊字符(。 [backtick],{,|,},〜和 - )。
/@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?/
正则表达式的下一部分匹配电子邮件地址的域名(例如
john.doe@example.com
中的example.com
)。正则表达式的这一部分允许域名包含字母和数字,并允许在域名中使用连字符(-
)来使用国际化域名(IDN)。
/(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/
正则表达式的最后一部分与电子邮件地址的顶级域(TLD)匹配(例如
john.doe@example.com
中的com
)。正则表达式的这一部分允许TLD包含字母和数字,并允许在TLD中使用连字符(-
)来使用IDN TLD。
现在我们对正则表达式有了彻底的了解,让我们看看如何使用