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

.NET 正則表達式實戰四例

     編輯:關於.NET

正則表達式是字串驗證、清理、轉換與擷取的利器。本文示範四個常見應用場景,提供 C# 與 VB.NET 雙語言範例。

1. 驗證電子郵件格式

使用 Regex.IsMatch 靜態方法快速驗證:

// C#
bool IsValidEmail(string strIn) {
    return Regex.IsMatch(strIn, 
        @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$");
}
' VB.NET
Function IsValidEmail(strIn As String) As Boolean
    Return Regex.IsMatch(strIn, _
        "^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$")
End Function

應用場景: 存入資料庫前過濾無效郵件格式。

2. 清理輸入字串(移除非法字元)

使用 Regex.Replace 保留英數字、@、-、.,其餘移除:

// C#
string CleanInput(string strIn) {
    return Regex.Replace(strIn, @"[^\w.@-]", "");
}
' VB.NET
Function CleanInput(strIn As String) As String
    Return Regex.Replace(strIn, "[^\w.@-]", "")
End Function

應用場景: 淨化使用者輸入,防止注入攻擊或髒資料。

3. 轉換日期格式(MM/DD/YY → DD-MM-YY)

使用具名捕獲群組(?<name>)與取代模式 ${name}:

// C#
string MDYToDMY(string input) {
    return Regex.Replace(input,
        @"\b(?<month>\d{1,2})/(?<day>\d{1,2})/(?<year>\d{2,4})\b",
        "${day}-${month}-${year}");
}
' VB.NET
Function MDYToDMY(input As String) As String
    Return Regex.Replace(input, _
        "\b(?<month>\d{1,2})/(?<day>\d{1,2})/(?<year>\d{2,4})\b", _
        "${day}-${month}-${year}")
End Function

技巧: 靜態 Regex.Replace 避免顯式建立 Regex 物件,適合一次性操作。

4. 從 URL 擷取通訊協定與連接埠

使用 Match.Result 方法搭配具名群組:

// C#
string Extension(string url) {
    Regex r = new Regex(@"^(?<proto>\w+)://[^/]+?(?<port>\d+)?/", RegexOptions.Compiled);
    return r.Match(url).Result("${proto}${port}");
}
' VB.NET
Function Extension(url As String) As String
    Dim r As New Regex("^(?<proto>\w+)://[^/]+?(?<port>\d+)?/", RegexOptions.Compiled)
    Return r.Match(url).Result("${proto}${port}")
End Function

範例: "https://www.example.com:8080/letters/readme.html" → "http8080"

小結

善用 Regex.IsMatch、Regex.Replace、Match.Result 等靜態/實例方法,配合具名群組與編譯選項,能編寫高效、可維護的字串處理邏輯。

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