2013-02-09 84 views
0

我有下面的代码来验证电子邮件地址为什么我的正则表达式无法匹配电子邮件?

var reg = new Regex(@"/^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/"); 

string e1 = "[email protected]"; 
string e2 = "namehost.net"; 

bool b1 = reg.IsMatch(e1); 
bool b2 = reg.IsMatch(e2); 

但两者B1B2失败

+2

你很近,但实际的正则表达式是:http://ex-parrot.com/~pdw/Mail-RFC822-Address.html – aquinas 2013-02-09 19:45:24

+2

其实,实际的正则表达式在这里:http://stackoverflow.com/问题/ 201323 /使用-A-正则表达式到验证-的电子邮件地址/ 1771483#1771483。 RFC822在12年前已经过时了。 – MichaelRushton 2013-02-09 20:10:12

回答

3

在开头和结尾删除斜线。

var reg = new Regex(@"^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$"); 

但是,这就是说,你的正则表达式不是匹配电子邮件地址的好模式。事实上,一个准确的模式真的很难做到。谷歌一些,你应该找到更好的。

+0

+1,好像他从javascript复制了正则表达式。 – gdoron 2013-02-09 20:05:00

+0

...或更糟的。 – Joey 2013-02-09 23:59:55

+0

@Joey,真的更糟?这一个接受大量的点('。@ ....'被匹配为有效),主机名中的非拉丁数字(例如像这样的阿拉伯数字),并且在复仇中不接受所有其他字符。并不是说它不支持直接IP地址格式等。 – Lucero 2013-02-10 02:28:24

相关问题