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

带特定条件的邮箱Regex验证:如何调整正则使abc@a.bb.com判定为有效

邮箱验证正则修改方案

现有正则无法匹配abc@a.bb.com的核心原因是:@后的域名分段规则要求每个分段最少要有2个字符,而该案例中@后第一个域名分段是单字符a,不符合原有校验逻辑。

原有问题分析

原有正则@后的域名匹配规则为:
([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+
这部分要求每个被.分隔的域名段必须同时以字母/数字开头和结尾,哪怕中间没有内容,最少也要2个字符长度,因此单字符的域名段a无法通过校验。

修改方案

只需要调整域名段规则,让结尾的匹配逻辑变成可选即可,修改后的完整正则如下:
@"^([0-9a-zA-Z]([-\.\'\w]*[0-9a-zA-Z])*@([0-9a-zA-Z]([-\w]*[0-9a-zA-Z])?\.)+[a-zA-Z]{2,9})$"

修改后的完整代码:

public static bool IsValidEmail(string email)
{
    var r = new Regex(@"^([0-9a-zA-Z]([-\.\'\w]*[0-9a-zA-Z])*@([0-9a-zA-Z]([-\w]*[0-9a-zA-Z])?\.)+[a-zA-Z]{2,9})$");
    return !string.IsNullOrEmpty(email) && r.IsMatch(email);
}

说明

本次修改仅在原有域名段的[-\w]*[0-9a-zA-Z]外层加了?修饰符,代表这部分可以出现0次或1次,这样单字符的域名段就能匹配成功,同时不影响原有多字符域名段的校验逻辑,实测abc@a.bb.com可以正常返回有效结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 14:09:01