默认正则表达式 django 用于验证电子邮件

Default regex django uses to validate email

最近,我开始玩 Django 并创建了一个用于用户注册的自定义表单。在那种创建电子邮件字段的表单中,我使用类似

的东西

email = forms.EmailField()

我观察到 a@a.a 这样的地址被表单认为是无效的。当然,这是一个无意义的电子邮件地址。尽管如此,我想知道 Django 是如何检查有效性的。

我在网上找到了一些讨论如何检查电子邮件地址有效性的主题,但它们都提供了一些自定义方法。找不到关于 Django 默认验证器的内容。

他们在 docs 提交的电子邮件中指定

Uses EmailValidator to validate that the given value is a valid email address, using a moderately complex regular expression.

不过这不是很具体所以我决定在这里问一下。

我们应该在此处查看文档 https://www.geeksforgeeks.org/emailfield-django-forms/#:~:text=EmailField%20in%20Django%20Forms%20is,max_length%20and%20min_length%20are%20provided

如果您想检查验证,请使用像这样的干净函数:

from django.forms.fields import EmailField

email = EmailField()

my_email = "a@a.a"


print(email.clean(my_email))

如果您的电子邮件有效,则此函数 return 值否则 return 验证错误

对于任何对此也感兴趣的人,我建议查看 django.core.validators 的实现(django.core.validators),正如 iklinac 在评论中提出的善意建议。

其中不仅有来源,还提到了用于派生正则表达式的标准,这些正则表达式检查域和文字是否具有有效格式。