用于验证国际电子邮件的正则表达式

2022-09-02 22:23:17

不确定是否有可用的解决方案,但无法找到。所以再问一次。

我正在编写电子邮件验证程序。这应该验证所有格式良好的电子邮件(这只是检查电子邮件格式良好的一个验证级别)。现在,由于我的代码是国际代码,所以我也应该支持非拉丁字符。我如何为此编写最有效的正则表达式?

国际电子邮件: http://en.wikipedia.org/wiki/International_email

一些示例电子邮件:

  1. 伊昭傑@郵件.商務
  2. राम@मोहन.ईन्फो
  3. юзер@екзампл.ком
  4. θσερ@εχαμπλε.ψομ

它应该能够验证上述所有格式


答案 1

通过正则表达式进行电子邮件验证之所以如此松懈,是因为它效率不高。有一个电子邮件地址语法的规范,但是检查它的正则表达式太长了,这是不切实际的。此外,电子邮件提供商在语法的实现方面比实际规范更严格。电子邮件可能被视为有效,因为规范说它是有效的,但根据提供商的说法是无效的。

这也是激活电子邮件存在的原因,因为检查电子邮件是否有效,存在和当前正在使用的唯一方法是向其发送一些东西,通常是唯一的激活码或链接。只有当使用仅发送到该电子邮件的唯一激活码或链接时,该电子邮件才会被视为有效。

在此之前,请考虑在验证电子邮件时采用更宽松的方法,检查用户名,和域部分。此外,为什么人们会使用虚假电子邮件注册呢?如果他们这样做,他们将无法获得激活链接,并且无法继续创建帐户。@


答案 2

@Patashu 非常感谢。我已经改进了您的正则表达式,现在它绝对适合我的需求:

^([^@\s\."'\(\)\[\]\{\}\\/,:;]+\.)*[^@\s\."'\(\)\[\]\{\}\\/,:;]+@[^@\s\."'\(\)\[\]\{\}\\/,:;]+(\.[^@\s\."'\(\)\[\]\{\}\\/,:;]+)+$