【发布时间】:2022-01-09 07:31:43
【问题描述】:
我有这个 C# 代码:
void Main()
{
// method 1 - using MailAddress
var email = "fooªbar@cander.com";
Console.WriteLine(IsValidEmail(email));
// method 2 - using EmailAddressAttribute
var validator = new System.ComponentModel.DataAnnotations.EmailAddressAttribute();
Console.WriteLine(validator.IsValid(email));
}
bool IsValidEmail(string email)
{
try
{
var addr = new System.Net.Mail.MailAddress(email);
return addr.Address == email;
}
catch
{
return false;
}
}
这验证了 fooªbar@cander.com 电子邮件地址。并且......它验证了它,尽管它有“ª”符号。为什么?根据:What characters are allowed in an email address? 应该是无效的
【问题讨论】:
-
我不确定,但可能是正则表达式字符串的问题:stackoverflow.com/questions/201323/…
-
是的,它使用了更复杂的正则表达式。 github.com/microsoft/referencesource/blob/master/…
-
具体来说,
ª是"letter, other" 的成员。 -
我对问题文本进行了彻底的调整,希望我认为您在谈论为什么特别是内置类以它们的方式执行,而不是您的自定义正则表达式。跨度>
-
有可能是valid email
标签: c# email-validation