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

如何将前端自定义域名邮箱验证的pattern转为C#后端可用的Regex

问题原因
  • 多余转义正则元字符:你在C#字符串中给^、[、+等正则特殊元字符额外加了反斜杠转义,导致正则变成匹配这些符号的字面量,自然无法匹配正常邮箱格式。
  • 误用HTML实体:你代码里写的&#64是HTML中的@符号实体,C#正则表达式中直接使用@字符即可,不需要转义也不需要用HTML实体。
  • 未转义域名点号:原前端pattern里的mydomain.com中的.没有转义,会匹配任意字符,存在mydomainXcom这类不符合要求的内容也校验通过的漏洞,后端修正时要转义为\.明确匹配点号。
  • 缺少结尾锚点:前端pattern属性默认会匹配完整输入内容,C#正则如果不加$结尾锚点,会出现xxx@mydomain.com.abc这类格式错误的内容也校验通过的问题,建议补充结尾锚点保证校验准确性。
正确实现代码

推荐使用@前缀的逐字字符串编写正则,不需要额外处理反斜杠转义,可读性更高:

Regex regex = new Regex(@"^[a-zA-Z0-9._+-]+@mydomain\.com$", RegexOptions.IgnoreCase);
// 校验示例
bool isValid = regex.IsMatch("firstname.lastname@mydomain.com"); // 输出为true

如果使用普通字符串编写,需要对正则里的反斜杠做二次转义:

Regex regex = new Regex("^[a-zA-Z0-9._+-]+@mydomain\\.com$", RegexOptions.IgnoreCase);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:42:00