共用方式為


使用 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 物件或列印錯誤訊息。 如果成功,請在物件的集合MatchGroups顯示 userhost 具名群組。

    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 資料夾。 然後輸入可執行檔的名稱,後面接著您想要測試的電子郵件位址。
    • 找出此專案的可執行檔,並將它拖曳至 [開始...]任務列上的 [執行 ] 視窗。 新增電子郵件地址以驗證,然後按兩下 [ 確定]。

參考資料