使用 Visual C# 和正規表示式比對模式

本逐步文章介紹如何建立和使用正則表達式來判斷字串是否符合特定模式。

原始產品版本: Visual C#
原始 KB 編號: 308252

摘要

正則表達式可讓您輕鬆地剖析字串,並將字串比對至特定模式。 使用命名空間中可用的 RegularExpressions 物件,您可以比較字串與指定的模式、將字串模式取代為另一個字串,或只擷取格式化字串的一部分。 在此範例中,我們將建構模式來驗證電子郵件位址。 本文參照 Microsoft .NET Framework 類別庫命名空間 System.Text.RegularExpressions

需求

本文假設您已熟悉下列主題:

  • Visual C#
  • 正則表達式語法

使用正則表達式來比對模式

  1. 啟動 Visual C#。

  2. 建立新的 Visual C# 主控台應用程式。

  3. 在命名空間上 Text.RegularExpressions 指定 using 關鍵詞,讓您稍後不需要在程式碼中限定這些命名空間中的宣告。 using 語句必須在任何其他宣告之前使用:

    using System.Text.RegularExpressions;
    
  4. 定義將使用模式比對來驗證電子郵件位址的新正則表示式。 下列正則表達式的結構化可完成三件事:

    1. 在符號之前 @ 擷取子字串,並將它放入群組中 user
    2. 在符號後面 @ 擷取子字串,並將它放入群組中 host
    3. 請確定字串的前半部沒有 @ 符號。
    Regex emailregex = new Regex("(?<user>[^@]+)@(?<host>.+)");
    
  5. 定義包含有效電子郵件位址的新字串。 如果方法的命令行自變數是空的,這會提供預設值:

    String s = "johndoe@tempuri.org";
    
  6. 檢查是否有任何命令行參數;如果有,請擷取第一個參數,並將它指派給變數 s

    if (args.Length > 0) {
        s = args[0];
    }
    
  7. 使用方法 Match 傳入電子郵件位址變數,並傳回新的 Match 物件。 Match不論是否在來源字串中找到任何相符項目,物件都會傳回 。

    Match m = emailregex.Match(s);
    
  8. 藉由檢查 Success 屬性,我們可以決定是否要繼續處理 Match 物件或列印錯誤訊息。 如果成功,請在物件的 user 集合MatchGroups顯示 和 host 具名群組。

    if (m.Success)
    {
        Console.WriteLine ("User: " + m.Groups["user"].Value);
        Console.WriteLine ("Host: " + m.Groups["host"].Value);
    }
    else
    {
        Console.WriteLine (s + " is not a valid email address");
    }
    Console.WriteLine ();
    
  9. 若要在執行應用程式之後讓主控台視窗保持開啟,請新增下列幾行程式代碼:

    System.Console.WriteLine("Press Enter to Continue...");
    System.Console.ReadLine();
    
  10. 建置您的專案。

  11. 若要使用程式代碼中指定的預設電子郵件地址在開發環境中執行應用程式,請按 F5 或從 [偵錯] 功能選取 [開始]。 若要使用命令行自變數啟動應用程式,有三個選項:

    • 在 [ 專案] 功能表上,按下 [ 屬性],然後按下 [ 偵錯]。 在右窗格的 [ 開始選項] 區段中,指定您要測試的電子郵件位址。 按 F5 鍵,或按一次選單上的 [開始] 來執行應用程式。
    • 啟動命令視窗,並流覽至您專案所在資料夾下的 bindebug 資料夾。 然後輸入可執行檔的名稱,後面接著您想要測試的電子郵件位址。
    • 找出此專案的可執行檔,並將它拖曳至 [開始...]任務列上的 [執行 ] 視窗。 新增要驗證的電子郵件地址,然後按兩下 [ 確定]

參考資料