You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django模型中RegexValidator无法正确校验指定格式邮箱的问题求助

问题解决:Django邮箱正则验证失效修正

你的正则表达式存在两个核心问题,导致错误格式的邮箱也能通过验证:

  • 末尾的[nith.ac.in]*是字符集匹配(方括号内的任意单个字符),加上*表示允许这些字符重复0次或多次,所以不管是.in还是in都会被匹配,甚至其他乱序组合也能通过。
  • 没有用$锚定字符串结尾,无法强制邮箱必须以指定域名结束。

修正后的代码

email = models.EmailField(
    unique=True,
    validators=[
        RegexValidator(
            regex=r"^22[a-zA-Z]{3}\d{3}@nith\.ac\.in$",
            message="Only freshers with college email addresses are authorised."
        )
    ],
)

关键修改说明

  1. 精确匹配域名:把[nith.ac.in]*替换为nith\.ac\.in$
    • \.用来转义正则中的特殊字符.(否则.会匹配任意单个字符)
    • $锚定字符串结尾,确保邮箱必须严格以@nith.ac.in结束,拒绝@nith.acin这类错误格式。
  2. 简化用户名匹配:把[2][2]简化为22,功能完全一致,代码更简洁。

内容的提问来源于stack exchange,提问作者Mehul Aggarwal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 23:30:28