天天看點

c# asp.net 正規表達式(12)

regularexprionvalidator控件用于對輸入控件的驗證,是否符合使用者自定義的模式相比對,該驗證類型允許檢查可預知的字元序列,如社會保障号、電子郵件位址、電話号碼、郵政編号,ip位址等重的字元序列。正規表達式驗證文法可分為用戶端和伺服器端的。用戶端使用的是JScript正規表達式文法,伺服器端是使用的regex文法,一般建議使用JScript,因為JScript是regex的子集,文法的統一性可以再用戶端和伺服器端得到同樣的結果。

regularexpressionvalidator的屬性:

ValidationExpression  擷取或設定确定字段驗證模式的正規表達式。

  ?

問号代表前面的字元最多隻可以出現一次。(0次、或1次)。例如,“colou?r”可以比對color或 者colour;

  +

加号代表前面的字元必須至少出現一次。(1次、或多次)。例如,“goo+gle”可以比對google、gooogle、goooogle等;

  *

星号代表前面的字元可以不出現,也可以出現一次或者多次。(0次、或1次、或多次)。例如,“0*42”可以比對42、042、0042、00042等。

執行個體html代碼:

body>

        <form id="form1" runat="server">

        <div style="text-align:center">

        示範正規表達式控件

        <hr style="width:50%" />

        填寫學生個人資訊<br />

        學生姓名:

        <asp:TextBox ID="name" runat="server"></asp:TextBox>

        <asp:RegularExpressionValidator ID="REValidator1" runat="server" 

                        ErrorMessage="姓名格式不對" ControlToValidate="name" 

        ValidationExpression="\w{4,12}">*</asp:RegularExpressionValidator>

        <asp:RequiredFieldValidator runat="server" ID="RQfile" ControlToValidate="name" ErrorMessage="姓名不能為空">*</asp:RequiredFieldValidator><br />

        出生日期:

        <asp:TextBox ID="birth" runat="server" ></asp:TextBox>

        <asp:RegularExpressionValidator    runat="server" ID="REValidator2" ErrorMessage="日期格式不對" ControlToValidate="birth"

         ValidationExpression="\d{4}([/-])+\d{1,2}([/-])+\d{1,2}">*</asp:RegularExpressionValidator><br />

         聯系電話:

         <asp:TextBox runat="server" ID="tel"></asp:TextBox>

         <asp:RegularExpressionValidator runat="server" ID="REValidator3"    ErrorMessage="電話格式不對" ControlToValidate="tel"

            ValidationExpression="\d{11}|(\d{3,4}-)?\d{7,8}">*</asp:RegularExpressionValidator>        <br />

            電子郵件:

            <asp:TextBox    runat="server" ID="email"></asp:TextBox>

            <asp:RegularExpressionValidator    ID="REValidator4" runat="server" ErrorMessage="電話格式不對" ControlToValidate="email"

             ValidationExpression="\w+([+-.])*@\w+([-.]\w)*\.\w+([-.]\w)*">*</asp:RegularExpressionValidator><br />

             <asp:Button runat="server" ID="Button1" Text="送出" OnClick="button_Click"/><br />

             <asp:Label ID="Label1" runat="server" Width="353px" ForeColor="Red"></asp:Label>

        </div>

        </form>

</body>

c#源代碼:

    protected void button_Click(object sender, EventArgs e)

                {

                        //驗證提示

                        if (Page.IsValid)

                                Label1.Text = "驗證成功";

                }

其在浏覽器中效果如下:

電子郵件正規表達式解析:

\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*這是vs2003中正規表達式編輯器生成的電子郵件的正則表達 式,它的意思是:\w+ 必須以一個a-z,a-z,0-9或_這些字元中的一個開頭。([-+.]\w+)* 的意思是:允許0個或是多個-+.a或-+.aa這樣的字元,也就是說,到這裡為止,郵件的位址可以是:a-aa+aaa.aaa這種作為開頭。接下來@ 就不用解釋了,郵件必須的東西。  \.比對小數點本身,當小數點沒有在[]中是,要比對它必須進行轉義。

在網上找的一些常用的正規表達式的例子:

1.驗證使用者名和密碼:("^[a-zA-Z]\w{5,15}$")正确格式:"[A-Z][a-z]_[0-9]"組成,并且第一個字必須為字母 6~16位;

  2.驗證電話号碼:("^(\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個英文字母組成的字元串:("^[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.隻能輸入零和非零開頭的數字:"^(0|[1-9][0-9]*)$"。

  12.隻能輸入有兩位小數的正實數:"^[0-9]+(.[0-9]{2})?$"。

  13.隻能輸入有1~3位小數的正實數:"^[0-9]+(.[0-9]{1,3})?$"。

  14.隻能輸入非零的正整數:"^\+?[1-9][0-9]*$"。

  15.隻能輸入非零的負整數:"^\-[1-9][]0-9"*$。

  16.隻能輸入長度為3的字元:"^.{3}$"。

  17.隻能輸入由26個英文字母組成的字元串:"^[A-Za-z]+$"。

  18.隻能輸入由26個大寫英文字母組成的字元串:"^[A-Z]+$"。

  19.隻能輸入由26個小寫英文字母組成的字元串:"^[a-z]+$"。

  20.驗證是否含有^%&',;=?$\"等字元:"[^%& ',;=?$\x22]+"。

  21.隻能輸入漢字:"^[\u4e00-\u9fa5]{0,}$"

  22.驗證URL:"^http://([\w-]+\.)+[\w-]+(/[\w-. /?%&=]*)?$"。

  23.驗證一年的12個月:"^(0?[1-9]|1[0-2])$"正确格式 為:"01"~"09"和"1"~"12"。

  24.驗證一個月的31天:"^((0?[1-9])|((1|2) [0-9])|30|31)$"正确格式為;"01"~"09"和"1"~"31"。

 注意:以上常用正規表達式中用^開始,以$結尾。

自己要認真看明白!!!!!!

本文轉自shenzhoulong  51CTO部落格,原文連結:http://blog.51cto.com/shenzhoulong/304834,如需轉載請自行聯系原作者

繼續閱讀