单字符邮箱域名正则匹配问题求助
邮箱正则验证问题修复方案
你的正则无法匹配testemail@t.com这类@后仅单个字符的邮箱,核心原因是@后的正则结构要求域名主体部分至少有两个字符:
- 原正则中
([A-Za-z0-9]+[.-]?)+会匹配至少一组字母数字(比如t),但后面紧接着的[A-Za-z0-9]+又要求额外至少一个字母数字,导致单个字符的域名主体无法满足。
修改后的正则如下:
[A-Z0-9a-z._%+-]+@[A-Za-z0-9]+([.-][A-Za-z0-9]+)*\.[A-Za-z]{2,}
关键调整说明:
- 去掉了原正则中
([A-Za-z0-9]+[.-]?)+后面多余的[A-Za-z0-9]+ - 改用
[A-Za-z0-9]+([.-][A-Za-z0-9]+)*来匹配域名主体:[A-Za-z0-9]+确保域名主体至少有一个字符(支持t这类单字符)([.-][A-Za-z0-9]+)*允许添加多个带分隔符的子域名(比如a.b、a-b)
这个修改既兼容单字符域名主体的邮箱,也能正常验证多字符、带子域名的邮箱。
内容的提问来源于stack exchange,提问作者Yupi
相关产品推荐
相关产品推荐

