這幾天正在制作用戶(hù)登陸這一塊,用戶(hù)登陸其中我覺(jué)得最煩人的就是輸入數據的驗證;雖然微軟給了我們幾個(gè)強的控件,但是自己寫(xiě)正則表達式那是相當的耗時(shí)間啊;在網(wǎng)上有很多人在網(wǎng)上發(fā)部了很多有用的正則表達式,可能以后會(huì )再次用到這些表達式,這里把它記錄下來(lái);通過(guò)驗證控件并不是100%保險的,因為用戶(hù)控件只是在客戶(hù)端驗證,有些無(wú)聊的人根本不通來(lái)那些來(lái)提交數據,所以我們還是要在服務(wù)端再次驗證,這樣正則表達式就成為了我們的重要工具啦.

   通過(guò)這幾天的努力我收集同時(shí)也自己寫(xiě)了幾個(gè)正則表達式,Look:

   1.驗證用戶(hù)名和密碼:("^[a-zA-Z]\w{5,15}$")正確格式:"[A-Z][a-z]_[0-9]"組成,并且第一個(gè)字必須為字母6~16位;
   
2.驗證電話(huà)號碼:("^(\d{3.4}-)\d{7,8}$")正確格式:xxx/xxxx-xxxxxxx/xxxxxxxx;
   
3.驗證身份證號(15位或18位數字):("^\d{15}|\d{18}$");
   
4.驗證Email地址:("^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$");
   5.只能輸入由數字和26個(gè)英文字母組成的字符串:("^[A-Za-z0-9]+$")  ;
   
6.整數或者小數:^[0-9]+\.{0,1}[0-9]{0,2}$
   
7.只能輸入數字:"^[0-9]*$"。
   
8.只能輸入n位的數字:"^\d{n}$"。
   
9.只能輸入至少n位的數字:"^\d{n,}$"。
   
10.只能輸入m~n位的數字:。"^\d{m,n}$"
   
11.只能輸入零和非零開(kāi)頭的數字:"^(0|[1-9][0-9]*)$"。
   
12.只能輸入有兩位小數的正實(shí)數:"^[0-9]+(.[0-9]{2})?$"。
   
13.只能輸入有1~3位小數的正實(shí)數:"^[0-9]+(.[0-9]{1,3})?$"。
   
14.只能輸入非零的正整數:"^\+?[1-9][0-9]*$"。
   
15.只能輸入非零的負整數:"^\-[1-9][]0-9"*$。
   
16.只能輸入長(cháng)度為3的字符:"^.{3}$"。
   
17.只能輸入由26個(gè)英文字母組成的字符串:"^[A-Za-z]+$"。
   
18.只能輸入由26個(gè)大寫(xiě)英文字母組成的字符串:"^[A-Z]+$"。
   
19.只能輸入由26個(gè)小寫(xiě)英文字母組成的字符串:"^[a-z]+$"。
   
20.驗證是否含有^%&,;=?$\"等字符:"[^%&,;=?$\x22]+"。
   
21.只能輸入漢字:"^[\u4e00-\u9fa5]{0,}$"
   
22.驗證URL:"^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$"。
   
23.驗證一年的12個(gè)月:"^(0?[1-9]|1[0-2])$"正確格式為:"01"~"09"和"1"~"12"。
   
24.驗證一個(gè)月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正確格式為;"01"~"09"和"1"~"31"。
 
     從上面我們可以看到:"^"表示后面緊跟著(zhù)的字符為開(kāi)頭;與之相對應的式"$"以緊跟前面的字符為結尾.但是要注意的式當"^"位于"[]"里時(shí),表示"非"的意思,例如:[^AZ]表示不能為"AZ"中的任一個(gè)字符."[]"表示當中的一個(gè)字符."{}"可以取得一個(gè)范圍,例如"{9}"表示9個(gè),而"{1,9}"表示1到9個(gè)字符.
 
       下面我們看看正則表達式在A(yíng)sp.Net數據驗證中的應用,第一個(gè)當然式在服務(wù)器驗證控件中的應用了,很簡(jiǎn)單看下面的代碼:

<asp:RegularExpressionValidator ID="RegularExpressionValidator1" ControlToValidate="UserName" ValidationExpression="^[a-zA-Z]\w{3,15}$" runat="server" ErrorMessage="用戶(hù)名格式不正確" ToolTip="用戶(hù)名格式不正確!">*</asp:RegularExpressionValidator>

    這樣就能滿(mǎn)足我們在客戶(hù)端的驗證,<asp:RegularExpression>控鍵很簡(jiǎn)單,ID和runat就不用多說(shuō)了,ControlToValidate指的是要驗證控件的ID,這里是UserName文本(TextBox)控件,ValidationExpression一看就知道要添上我們的正則表達式了.如果沒(méi)有輸入"*",但為通過(guò)驗證時(shí)會(huì )顯示ErrorMessage里的內容,當然要預先為顯示這些東西留點(diǎn)空間的哦,不然效果會(huì )不好的哦.不過(guò)我們可以把所有錯誤的放在ValidationSummary控件中.

      上面只能用于君子中,有些無(wú)聊的人不同過(guò)你的這些控件直接給你的服務(wù)器發(fā)信息,這樣就可能有麻煩了,不用著(zhù)急,我們可以在服務(wù)端添加一點(diǎn)東西:

 1
using System;
 2
using System.Web;
 3
//一定記住引用此空間.
 4
using System.Text.RegularExpressions;
 5

 6
namespace NexPlus.Validation{
 7
   
public partial class Simple : System.Web.UI.UserControl
 8
    
{
 9
      
public Simple(){}
10
      
protected void Submit_Click(object sender, ImageClickEventArgs e)
11
        
{
12
            
if (Page.IsValid)
13
            
{
14
              
if(!Regex.IsMatch(UserName.Text,@"^[a-zA-Z]\w{5,17}$",RegexOptions.IgnorePatternWhitespace)){
15
                    UserName.Focus();
16
                    
return;
17
                }

18
                
//
..

19
             }

20
           }

21
    }

22
}