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

求满足含至少一个字母等规则的邮箱匹配正则表达式

符合需求的正则表达式

^(?=[^@]*[a-zA-Z])[\w]+(?:[.-][\w]+)*@[\w]+(?:[.-][\w]+)*(?:\.\w{2,})+$

如果你需要严格限制域名后缀长度为2-3位,可以使用下面的版本:

^(?=[^@]*[a-zA-Z])[\w]+(?:[.-][\w]+)*@[\w]+(?:[.-][\w]+)*(?:\.\w{2,3})+$

原正则问题说明

你之前的正则之所以会匹配到12345@gmail.com这类不符合要求的地址,核心原因是正向预查(?=.*[a-zA-Z])没有限制匹配范围,会扫描整个邮箱字符串,哪怕用户名全是数字,只要域名部分存在英文字母就会通过校验。


正则逻辑说明

  • 开头的(?=[^@]*[a-zA-Z]):强制要求@符号之前的用户名部分必须至少包含1个英文字母,不会匹配到域名段的字符,从根源避免全数字用户名通过校验
  • 用户名段[\w]+(?:[.-][\w]+)*:支持包含数字、英文字母、下划线,允许用.或-作为中间分隔符,自动过滤开头/结尾是特殊符号、连续特殊符号的不规范用户名
  • 域名段@[\w]+(?:[.-][\w]+)*(?:\.\w{2,})+$:符合标准邮箱域名结构,支持多级后缀(如.com.cn、.info这类后缀都可正常匹配)

校验效果示例

可正常匹配的地址

  • a123_test@gmail.com
  • user.name@test.com.cn
  • a_1234@xxx.org

会被拦截的地址

  • 12345@gmail.com(用户名无英文字母)
  • 123_456@qq.com(用户名无英文字母)
  • user@.com(域名格式错误)
  • user@domain(无域名后缀)

内容的提问来源于stack exchange,提问作者sn-

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 11:06:01