我对(Visual)C#中的电子邮件验证有疑问。
我在网上搜索并发现了几种方法。例如。这里:
奇怪的是,他们似乎都让“ex.as @ asd,com”等电子邮件通过(注意逗号而不是点)。
但是,如果我尝试通过SmtpClient
对象发送电子邮件,我会收到异常,因为给定的电子邮件地址格式错误。
有什么想法吗?
答案 0 :(得分:0)
如果您在下面尝试,它将以您可以验证地址的方式抛出异常。
try
{
address = new MailAddress("ex.as@asd,com", "Email validation").Address;
}
catch(FormatException) {
//Invalid email address
}
MailAdress.Address属性在您尝试获取时抛出FormatException。
答案 1 :(得分:0)
第一个链接的正则表达式对我有用。您应该将所有\替换为\\和“to”。
我试过这段代码:
var validateEmailRegex = new Regex("(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])");
var isValidEmail = validateEmailRegex.Match("ex.as@asd,com").Success;
我得到了isValidEmail == false。