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

正則表達式資料驗證技術總結:語法速查表、常用模式與最佳實踐指南

     編輯:關於ASP.NET

正則表達式以強大的模式匹配能力,成為資料驗證、文字搜尋/替換、垃圾郵件過濾的利器。本文整理核心語法、常用驗證模式與實戰建議。

核心語法速查表

語法說明範例
\轉義字元\. 匹配點號
^字串開頭 (多行模式匹配行首)^A 以 A 開頭
$字串結尾 (多行模式匹配行尾)Z$ 以 Z 結尾
*零次或多次 ({0,})ab*c 匹配 ac, abc, abbc...
+一次或多次 ({1,})ab+c 匹配 abc, abbc...
?零次或一次 ({0,1})ab?c 匹配 ac, abc
{n}恰好 n 次\d{4} 4 位數字
{n,}至少 n 次\d{2,} 至少 2 位數字
{n,m}n 到 m 次\d{3,5} 3-5 位數字
? (緊隨量詞後)非貪婪模式 (最短匹配).*? 匹配最少字元至下一模式
.任意單一字元 (除換行)a.b 匹配 aXb, a3b...
(pattern)捕獲群組 (可用 $1/$2 反向引用)(\d{4})-(\d{2}) 擷取年月
(?:pattern)非捕獲群組 (僅分組不擷取)(?:\d{3}-){2}\d{4} 電話格式
(?=pattern)正向前瞻 (零寬斷言)Windows(?=95|98|NT) 匹配 Windows 後接版本
(?!pattern)負向前瞻Windows(?!95|98|NT) 排除特定版本
x|y或 (Alternation)cat|dog 匹配 cat 或 dog
[abc]字元集合[aeiou] 母音
[^abc]排除字元集合[^0-9] 非數字
\d \w \s數字/單字字元/空白字元 簡寫\d+ 一或多個數字
\D \W \S上述反向集合\D+ 非數字序列

常用驗證模式庫

驗證項目正則模式說明
Email^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$支援子域名、多種頂級域
手機號 (台灣)^09\d{8}$09 開頭 10 位
身分證字號 (台灣)^[A-Z][12]\d{8}$字母+性別碼+8碼數字
統一編號 (台灣)^\d{8}$8 位數字 (可加檢查碼演算法)
URL^https?://([\w-]+\.)+[\w-]+(/.*)?$HTTP/HTTPS 基本檢查
IPv4^((25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(25[0-5]|2[0-4]\d|[01]?\d?\d)$嚴格 0-255 四段
中文姓名^[\u4e00-\u9fa5]{2,10}$2-10 個中文字元
強密碼^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%]).{8,}$大小寫/數字/特殊字元/8字元以上
日期 (YYYY-MM-DD)^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$格式檢查 (不驗證月份天數邏輯)

.NET 使用最佳實踐

// 1. 編譯緩存:靜態唯讀 Regex 實例 (執行緒安全)
private static readonly Regex EmailRegex = new Regex(
    @"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$", RegexOptions.Compiled);

// 2. 驗證方法
public bool IsValidEmail(string email)
{
    return EmailRegex.IsMatch(email);
}

// 3. ASP.NET RegularExpressionValidator 直接使用
// <asp:RegularExpressionValidator ValidationExpression="^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$" />

// 4. 替換應用
string sanitized = Regex.Replace(input, @"]*>.*?", "", RegexOptions.IgnoreCase | RegexOptions.Singleline);

效能與可維護性建議

  1. 預編譯:RegexOptions.Compiled 將模式編譯為 IL,重複使用效能提升 30%+。
  2. 2. 避免災難性回溯:慎用巢狀量詞 (a+)+、模糊模式 .*,改用具體字元集合 [^>]*。 3. 單一職責:複雜驗證拆分為多個簡單 Regex,或改用程式碼邏輯 (如日期邏輯驗證)。 4. 文件化:每個 Regex 附註釋說明用途、測試案例、來源。 5. 工具輔助:使用 Regex101、Regexr 即時測試與解釋。

正則表達式是雙面刃:威力強大但易寫成「寫時讀不懂」的代碼。掌握核心語法、建立模式庫、遵循最佳實踐,才能發揮其最大價值。

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