电子邮件正则表达包括unicode域

我想知道是否有人找到了一个解决方案来validation包含unicode字符的电子邮件,如同在unicode域中一样? 我已经搜索了很长时间,但还没有找到有效的解决方案。

我遇到了同样的问题,想出了一个智能解决方案\p{L} 。 请检查一下:

 private static bool IsEmailValid(string email) { System.Text.RegularExpressions.Regex re = new Regex(@"^[\p{L}0-9!$'*+\-_]+(\.[\p{L}0-9!$'*+\-_]+)*@[\p{L}0-9]+(\.[\p{L}0-9]+)*(\.[\p{L}]{2,})$", RegexOptions.CultureInvariant | RegexOptions.IgnoreCase); return re.IsMatch(email); } 

通过正则表达式完全validation电子邮件地址很难 。 真的很难。 这是完全符合RFC822的 。 即使您创建了一个正确的正则表达式来validation所有电子邮件地址,也不会阻止我输入hi@hi.com(如果您要确保我输入有效的电子邮件地址)或意外拼写错误的用户名(如果您正在尝试确保我正确输入我的电子邮件地址)。

只需在电子邮件中发送一个链接,说“点击此处validation您的电子邮件地址”。

好的,所以我发现的唯一真正棒极了的电子邮件validation(而不仅仅是OK)是Zend Framework的一部分。 当然这意味着PHP,但希望你可以看看他们是如何做到并模仿他们的一些更好的想法: http : //pastebin.com/SvZPBp31或者只是查找Zend_Validate_EmailAddress源代码。

抱歉,这不是C#语法/语言。

正如已经指出的那样,通过正则表达式validation电子邮件地址是一个难题。 你可以用一个相当简单的方法来接近,但是很多很多情况下它都无法捕获。 我正在发送电子邮件到一个假定的电子邮件地址,因为@Nick ODell建议(在进行一些基本的健全性检查之后,如果它包含@符号,域名部分是否存在并且有一个或多个MX / A / AAAA RR,等等)并包括validation链接。

也就是说,如果通过Unicode domain你的意思是一个Punycode编码的主机名标签,那些应该由任何中途主管validation正则表达式覆盖,如编码forms那些只是xn--后跟常规集[a-z0-9-] (不区分大小写的比较)。