本文很早以前在发布到网上的博文整理,里面的代码或许没有过时,至于用于最新.net core的代码是否能够保证没有问题,并没有去测试,想来都是微软的技术,使用此方式对email进行合法性校验问题不大。
C#正则表达式
在做互联网项目的开发过程中,经常验证电子邮件格式的问题,对于此类的处理方式,想必大部分人都是使用正则表达式来验证;如下面的常见代码:
/// <summary> /// 检查是否是正确Email地址 /// </summary> /// <param name="emailAddress"></param> /// <returns></returns> public static bool CheckEmail(string emailAddress) { return Regex.IsMatch(emailAddress, @"^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$"); }
对于这种常见的代码,验证比较常见的邮箱格式是没有问题的,如:risi@qq.com;不过有的屌丝的邮箱是类似这种格式的,但它却是正确的电子邮件地址,如下:
wocao.qq@ri.com;备注:此邮箱地址纯属举例,如有雷同,纯属巧合
对于这种格式的电子邮件地址,上面的代码返回值是False;如果这时候在你做的互联网项目中,客服接到客户的投诉电话说:“你们的网站做得真JB烂啊,我输入正确的邮件地址,总是提示老子错误”;这个时候客服和研发团队成员要崩溃了…;这时候苦逼了程序猿了,,Debug半天原来发现是这个正则错了。。。;这个时候维护人员心里面直骂娘,这TMD谁写的啊,坑死爹了啊。。
相信大家都遇到过这种问题,代码没有经过严格测试,随便在网上抠一段代码来简单输入几个测试用例应付差事完事;如果经过严格的测试,相信上面的场景是不会发生的了。对于锅内软件从业者的现状,圈里人都知道,也不便说什么了;现在就说说与程序员相关的问题吧。
像验证电子邮件地址是否合法这种技术活,方式太多了;只要能达到目的,不管你采取什么手段,解决问题最重要;不过对于懒人来说,自然有懒人的办法,.net的内裤里面虽然没有直接提供验证电子邮件的方法,不过可以利用一个叫MailAddress类来达到目的,废话不多说,直接上代码:
class Program { static void Main(string[] args) { string address = null; try { address = new MailAddress("wocao.bai@ri.com").Address; } catch (FormatException ex) { Console.WriteLine(ex.Message); } Console.WriteLine(address); Console.WriteLine(CheckEmail("wocao.du@ri.com")); } /// <summary> /// 检查是否是正确Email地址 /// </summary> /// <param name="emailAddress"></param> /// <returns></returns> public static bool CheckEmail(string emailAddress) { return Regex.IsMatch(emailAddress, @"^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$"); } }
看到了吧,一了百了。英文好的朋友可以使用:How to validate an email address using a regular expression? 在stackoverflow上搜索。