国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

驗證控件介紹--RegularExpressionValidator

2024-07-21 02:22:01
字體:
來源:轉載
供稿:網友
   我們在制作網站的時候,尤其是各種電子商務網站,首先都會讓用戶填寫一些表格來獲取注冊用戶的各種信息,因為用戶有可能輸入各式各樣的信息,而有些不符合要求的數據會給我們的后端asp處理程序帶來不必要的麻煩,甚至導致網站出現一些安全問題。因此我們在將這些信息保存到網站的數據庫之前,要對這些用戶所輸入的信息進行數據的合法性校驗,以便后面的程序可以安全順利的執行。
    使用regularexpressionvalidator服務器控件,可以用來檢查我們輸入的信息是否和我們的自定義的表達式一致。比方說用它可以檢查e-mail地址,電話號碼等合法性。
在講述regularexpressionvalidator服務器控件使用之前,我們先來了解一下正則表達式(regularexpression)的來源:
正則表達式的“祖先”可以一直上溯至對人類神經系統如何工作的早期研究。warren mcculloch 和 walter pitts 這兩位神經生理學家研究出一種數學方式來描述這些神經網絡。1956 年, 一位叫 stephen kleene 的美國數學家在 mcculloch 和 pitts 早期工作的基礎上,發表了一篇標題為“神經網事件的表示法”的論文,引入了正則表達式的概念。正則表達式就是用來描述他稱為“正則集的代數”的表達式,因此采用“正則表達式”這個術語。隨后,發現可以將這一工作應用于使用ken thompson 的計算搜索算法的一些早期研究,ken thompson是unix 的主要發明人。正則表達式的第一個實用應用程序就是 unix 中的qed 編輯器。如他們所說,剩下的就是眾所周知的歷史了。從那時起直至現在正則表達式都是基于文本的編輯器和搜索工具中的一個重要部分。
    其實,正則表達式(regularexpression)是一個正則表達式就是由普通字符(例如字符 a 到 z)以及特殊字符(稱為元字符)組成的文字模式。該模式描述在查找文字主體時待匹配的一個或多個字符串。正則表達式作為一個模板,將某個字符模式與所搜索的字符串進行匹配。       
    使用正則表達式,就可以:
    1. 測試字符串的某個模式。例如,可以對一個輸入字符串進行測試,看在該字符串是否存在一個電話號碼模式或一個信用卡號碼模式。這稱為數據有效性驗證。
    2. 替換文本。可以在文檔中使用一個正則表達式來標識特定文字,然后可以全部將其刪除,或者替換為別的文字。
    3. 根據模式匹配從字符串中提取一個子字符串。可以用來在文本或輸入字段中查找特定文字。
    例如,如果需要搜索整個 web 站點來刪除某些過時的材料并替換某些html 格式化標記,則可以使用正則表達式對每個文件進行測試,看在該文件中是否存在所要查找的材料或 html 格式化標記。用這個方法,就可以將受影響的文件范圍縮小到包含要刪除或更改的材料的那些文件。然后可以使用正則表達式來刪除過時的材料,最后,可以再次使用正則表達式來查找并替換那些需要替換的標記。
    另一個說明正則表達式非常有用的示例是一種其字符串處理能力還不為人所知的語言。vbscript 是 visual basic 的一個子集,具有豐富的字符串處理功能。與 c 類似的 visual basic scripting edition 則沒有這一能力。正則表達式給 visual basic scripting edition 的字符串處理能力帶來了明顯改善。不過,可能還是在 vbscript 中使用正則表達式的效率更高,它允許在單個表達式中執行多個字符串操作。
正是由于“正則表達式”的強大功能,才使得微軟慢慢將正則表達式對象移植到了視窗系統上面。在書寫正則表達式的模式時使用了特殊的字符和序列。下表描述了可以使用的字符和序列,并給出了實例。
字符描述: /:將下一個字符標記為特殊字符或字面值。例如"n"與字符"n"匹配。"/n"與換行符匹配。序列"//"與"/"匹配,"/("與"("匹配。
    ^ :匹配輸入的開始位置。
$ :匹配輸入的結尾。
* :匹配前一個字符零次或幾次。例如,"zo*"可以匹配"z"、"zoo"。
+ :匹配前一個字符一次或多次。例如,"zo+"可以匹配"zoo",但不匹配"z"。
? :匹配前一個字符零次或一次。例如,"a?ve?"可以匹配"never"中的"ve"。
.:匹配換行符以外的任何字符。
(pattern) 與模式匹配并記住匹配。匹配的子字符串可以從作為結果的 matches 集合中使用 item [0]...[n]取得。如果要匹配括號字符(和 ),可使用"/(" 或 "/)"。
x|y:匹配 x 或 y。例如 "z|food" 可匹配 "z" 或 "food"。"(z|f)ood" 匹配 "zoo" 或 "food"。
{n}:n 為非負的整數。匹配恰好n次。例如,"o{2}" 不能與 "bob 中的 "o" 匹配,但是可以與"foooood"中的前兩個o匹配。
{n,} :n 為非負的整數。匹配至少n次。例如,"o{2,}"不匹配"bob"中的"o",但是匹配"foooood"中所有的o。"o{1,}"等價于"o+"。"o{0,}"等價于"o*"。
{n,m} :m 和 n 為非負的整數。匹配至少 n 次,至多 m 次。例如,"o{1,3}" 匹配 "fooooood"中前三個o。"o{0,1}"等價于"o?"。
[xyz] :一個字符集。與括號中字符的其中之一匹配。例如,"[abc]" 匹配"plain"中的"a"。
[^xyz] :一個否定的字符集。匹配不在此括號中的任何字符。例如,"[^abc]" 可以匹配"plain"中的"p".
[a-z] :表示某個范圍內的字符。與指定區間內的任何字符匹配。例如,"[a-z]"匹配"a"與"z"之間的任何一個小寫字母字符。
[^m-z] :否定的字符區間。與不在指定區間內的字符匹配。例如,"[m-z]"與不在"m"到"z"之間的任何字符匹配。
/b :與單詞的邊界匹配,即單詞與空格之間的位置。例如,"er/b" 與"never"中的"er"匹配,但是不匹配"verb"中的"er"。
/b :與非單詞邊界匹配。"ea*r/b"與"never early"中的"ear"匹配。
/d :與一個數字字符匹配。等價于[0-9]。
/d :與非數字的字符匹配。等價于[^0-9]。
/f :與分頁符匹配。
/n :與換行符字符匹配。
/r :與回車字符匹配。
/s :與任何白字符匹配,包括空格、制表符、分頁符等。等價于"[ /f/n/r/t/v]"。
/s :與任何非空白的字符匹配。等價于"[^ /f/n/r/t/v]"。
/t :與制表符匹配。
/v :與垂直制表符匹配。
/w :與任何單詞字符匹配,包括下劃線。等價于"[a-za-z0-9_]"。
/w :與任何非單詞字符匹配。等價于"[^a-za-z0-9_]"。
/num :匹配 num個,其中 num 為一個正整數。引用回到記住的匹配。例如,"(.)/1"匹配兩個連續的相同的字符。
/n:匹配 n,其中n 是一個八進制換碼值。八進制換碼值必須是 1, 2 或 3 個數字長。
例如,"/11" 和 "/011" 都與一個制表符匹配。"/0011"等價于"/001" 與 "1"。八進制換碼值不得超過 256。否則,只有前兩個字符被視為表達式的一部分。允許在正則表達式中使用ascii碼。
/xn:匹配n,其中n是一個十六進制的換碼值。十六進制換碼值必須恰好為兩個數字長。例如,"/x41"匹配"a"。"/x041"等價于"/x04" 和 "1"。允許在正則表達式中使用 ascii 碼。
    regularexpressionvalidator有兩種主要的屬性來進行有效性驗證。controltovalidate 包含了一個值進行驗證。如取出文本框中的值。如controltovalidate="textbox1" validationexpression 包含了一個正則表達式進行驗證。
好了,有了上面的敘述,我們就舉個例子來說明正則表達式。比如,我們想要對用戶輸入的電子郵件進行校驗,那么,什么樣的數據才算是一個合法的電子郵件呢?我可以這樣輸入:[email protected],當然我也會這樣輸入:[email protected],但是這樣的輸入就是非法的:[email protected]@com.cn或者@xxx.com.cn,等等,所以我們得出一個合法的電子郵件地址至少應當滿足以下幾個條件:
1. 必須包含一個并且只有一個符號“@”
2. 第一個字符不得是“@”或者“.”
3. 不允許出現“@.”或者[email protected]
4. 結尾不得是字符“@”或者“.”
所以根據以上的原則和上面表中的語法,我們很容易的就可以得到需要的模板如下:"= "^/w+((-/w+)|(/./w+))*/@[a-za-z0-9]+((/.|-)[a-za-z0-9]+)*/.[a-za-z0-9]+$"
請看validata6.aspx的內容:

<!--源文件:form/web頁面簡介/validate6.aspx-->
</head>
<body>
<center><h3><font face="verdana">使用正則表達式驗證</font></h3></center>
<p>
<form runat="server">
<center>
<title>使用正則表達式驗證</title>
    <table bgcolor="#eeeeee" cellpadding=10>
    <tr valign="top">
      <td colspan=3>
        <asp:label id="lbloutput" text="輸入e-mail地址" font-name="verdana" font-size="10pt" runat="server"/>
      </td>
    </tr>
    <tr>
      <td align=right>
        <font face=verdana size=2>e-mail:</font>
      </td>
      <td>
        <asp:textbox id=textbox1 runat=server />
      </td>
      <td>
        <asp:regularexpressionvalidator id="regularexpressionvalidator1" runat="server"
            controltovalidate="textbox1"
            validationexpression="^/w+((-/w+)|(/./w+))*/@[a-za-z0-9]+((/.|-)[a-za-z0-9]+)*/.[a-za-z0-9]+$"
            display="static"
            font-name="verdana"
            font-size="10pt">
               請輸入有效的e-mail地址!
        </asp:regularexpressionvalidator>
      </td>
    </tr>
    <tr>
      <td></td>
      <td>
        <asp:button text="驗證" onclick="validatebtn_click" runat=server />
      </td>
      <td></td>
    </tr>
    </table>
</center>
</form>
</body>
</html>

   這樣,我們只要定制不同的模板,就可以實現對不同數據的合法性校驗了。所以,正則表達式對象中最重要的屬性就是:“pattern”屬性,只要真正掌握了這個屬性,才可以自由的運用正則表達式對象來為我們的數據校驗進行服務。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 厦门市| 泽州县| 肇庆市| 临朐县| 墨玉县| 公主岭市| 桃源县| 逊克县| 涟水县| 会昌县| 铁岭县| 建湖县| 海淀区| 仁化县| 丰宁| 天水市| 奎屯市| 石门县| 桃园县| 新竹市| 镶黄旗| 华容县| 如东县| 筠连县| 治多县| 江城| 定兴县| 威海市| 伊通| 鸡泽县| 抚州市| 鄂尔多斯市| 蒲城县| 佳木斯市| 吉木乃县| 朝阳区| 柘荣县| 轮台县| 罗源县| 东阿县| 玉树县|