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

时间:2013-05-09 05:23:47

标签: java javascript regex

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

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

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

一些示例电子邮件:

  1. 伊昭杰@邮件。商务
  2. राम@मोहन.ईन्फो
  3. юзер@екзампл.ком
  4. θσερ@εχαμπλε.ψομ
  5. 它应该能够验证所有上述格式

4 个答案:

答案 0 :(得分:7)

通过regexp进行电子邮件验证的原因是如此宽松是因为它效率不高。 电子邮件地址语法的规范,但是the regexp to check it is so long, it's impractical。此外,电子邮件提供商在实现语法方面比实际规范更严格。根据规范说明,电子邮件可能被视为有效,但根据提供商而无效。

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

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

答案 1 :(得分:0)

@Patashu非常感谢。我已经改善了你的正则表达式,现在它完全符合我的需要:

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

答案 2 :(得分:0)

对于Java,这个对我很有用。

"^[\\p{L}\\p{N}\\._%+-]+@[\\p{L}\\p{N}\\.\\-]+\\.[\\p{L}]{2,}$"

在@之后不允许使用IP,但xxx@xxx.TDL中来自\p{L}的最有效电子邮件可以通过它验证。 \p{N}验证UTF-Letters,&!验证UTF-Numbers。您可以查看this doc以获取更多信息。

答案 3 :(得分:0)

如果您在域和用户名中都没有特殊的字母,字符但带有破折号(-)和数字,则这对我来说适用于Python。如果您有国家/地区扩展名,这也将匹配。

[a-zA-Z0-9 .-] + @ [a-zA-Z-] +。(com | edu | net)(。([[a-z] +))*