[C#]老梗不死之驗證電子信箱

摘要:[C#]老梗不死之驗證電子信箱

好幾天沒有更新blog了,原因之一是工作有點焦頭爛額,但主因還是因為寫windows phone 7的心得技術文章卡關了XDDD!

所以先來一篇轉換一下心情吧!會想寫老梗不死系列的原因是因為公司多了幾個新人,我發現新人常常在寫商業網站的時候遇到類似的問題,在google找答案,去書店翻書,屢試不爽,遙想我以前也是這樣啊!但可能就是這些問題太簡單太基本以至於很難找到資料,我把問題整理過後,把一些常用的簡單的老梗的問到爛的功能發表來跟大家分享。

第一篇就從驗證電子信箱開始吧!常常商業網站在需要客戶填寫個人基本資料時留下email,這個驗證就是預防調皮的客戶留下非正確格式之資料,當然方法很多,需要驗證的類型也很多,例如身分證驗證ˋ網域驗證ˋ手機號碼等。

像這樣的驗證,一般建議把它寫成函式,與其他驗證項目一起放在共用函數區即可。

01 public int Check_Email(string strEmail)
02     {
03   int intPos = 0, rtn_value = 0, sCnt = 0;
04   string strHost = "";
05   string strInvalidChars = "";
06
07   strEmail = strEmail.Trim();
08
09 // 1 .字串的長度是否小於 5 碼 (Email 最少要有 A@B.C,五個字所組成)
10   sCnt = strEmail.Length;    // 字串長度
11
12   if (sCnt < 5)
13   {
14       rtn_value = 1;
15   }

16
17   // 2 .檢查字串中是否含有不合法的字元。  
18   if (rtn_value == 0)
19   {
20       strInvalidChars = "!#$%^&*()=+{}[]|\\;:'/?>,< ";
21
22       for (intPos = 0; intPos < sCnt; intPos++)
23       {
24     if (strInvalidChars.Contains(strEmail.Substring(intPos, 1)))
25     {
26         rtn_value = 2;
27         intPos = sCnt;  
28     }

29       }

30   }

31
32   // 3 檢查字串的首字或尾字是否含有"@"字元。  
33   if (rtn_value == 0)
34   {
35       intPos = strEmail.IndexOf("@") + 1;
36       if (intPos == 1 || intPos == sCnt || intPos == 0)
37     rtn_value = 3;
38   }

39
40   // 4 檢查字串中含有第二個"@"字元。  
41   if (rtn_value == 0)
42   {
43       // 取出郵件伺服器位址,即如一般 "hinet.net"
44       strHost = strEmail.Substring(intPos, sCnt - intPos);
45
46       if (strHost.IndexOf("@") > -1)
47     rtn_value = 4;
48   }

49
50   // 5 郵件伺服器位位址驗證。  
51   if (rtn_value == 0)
52       rtn_value = Check_Host(strHost.ToLower());
53
54   return rtn_value;
55     }

 

就這樣,老梗不死下次再見。

分享


站作網站設計工作室 SiteMak Studio
Shinyo Ho 
Founder / Developer
email:shinyo.her@gmail.com|web:www.sitemak.com.tw