2013-02-09 44 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

相關問題