首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 驗證控件深度解析 (二):RegularExpressionValidator 正則驗證完整指南

     編輯:關於ASP.NET

RegularExpressionValidator 核心功能

利用正則表達式驗證輸入控件的值。繼承 `BaseValidator` 所有屬性,另具關鍵屬性 ValidationExpression:設定用於比對的正則模式。

Visual Studio 內建正則運算式編輯器

屬性視窗中點選 `ValidationExpression` 右側省略號,開啟「正則運算式編輯器」對話框,提供常用模式快速選取:

  • Internet URL
  • E-mail address
  • US ZIP Code
  • Phone number
  • Internet e-mail address
  • ...等

也可自行輸入自訂正則,編輯器支援即時測試輸入字串是否符合。

常用驗證模式速查表

驗證項目正則表達式說明
Email`^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$`基本郵件格式
手機號碼 (台灣)`^09\d{8}$`09 開頭 10 碼
身分證字號`^[A-Z]{1}[12]{1}\d{8}$`1 字母 + 1/2 + 8 數字
統一編號`^\d{8}$`8 碼數字
郵遞區號 (3+3)`^\d{3}(\d{3})?$`3 或 6 碼
中文姓名`^[\u4e00-\u9fa5]{2,10}$`2-10 個中文字
英數字底線 (6-20)`^[\w]{6,20}$`帳號常用規則
強密碼 (含大小寫數字特殊 8+)`^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%]).{8,}$`正向先行斷言
IPv4 位址`^((25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(25[0-5]|2[0-4]\d|[01]?\d?\d)$`0.0.0.0 - 255.255.255.255
日期 (YYYY-MM-DD)`^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$`格式驗證,不檢查月份天數邏輯

實作範例:Email 驗證

<asp:TextBox ID="txtEmail" runat="server" />
<asp:RegularExpressionValidator
    ID="revEmail"
    runat="server"
    ControlToValidate="txtEmail"
    ValidationExpression="^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$"
    ErrorMessage="Email 格式不正確"
    Display="Dynamic"
    CssClass="text-danger"
    SetFocusOnError="true" />

進階技巧

  1. 多條件驗證:單一控件可搭配多個 Validator (RequiredField + RegularExpression + CustomValidator)。
  2. 客戶端/伺服器端同步:`EnableClientScript="true"` (預設) 會產生 JavaScript 驗證,仍會在伺服器端再次驗證,確保安全。
  3. 動態設定模式:後台程式碼 `revEmail.ValidationExpression = newPattern;` 可依業務規則動態調整。
  4. 驗證群組:設定 `ValidationGroup="Group1"`,配合按鈕 `ValidationGroup="Group1"` 實現分組驗證 (如同一頁有登入與註冊表單)。

注意事項

  • 正則效能:避免過度複雜的巢狀量詞 (如 `(a+)+`),防止災難性回溯。
  • Unicode 支援:ASP.NET 正則引擎支援 Unicode 類別 (如 `\p{L}` 任意字母),比 `[\u4e00-\u9fa5]` 更通用。
  • 前端繞過風險:客戶端驗證可被繞過,**伺服器端 `Page.IsValid` 檢查不可省略**。

總結

`RegularExpressionValidator` 以聲明式方式實現強大的格式驗證,善用內建編輯器與常用模式庫,可快速建立健壯的輸入防護。配合驗證群組與伺服器端二次驗證,構建完整的輸入驗證體系。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved