文章編號: 308252 - 上次校閱: 2006年4月26日 - 版次: 3.0

如何:使用規則運算式和 Visual C# .NET 比對模式

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。
本文曾發行於 CHT308252

在此頁中

全部展開 | 全部摺疊

結論

本文將示範如何建立和使用規則運算式,判斷字串是否符合某些模式。規則運算式可以更容易地剖析和比對字串是否符合特定的模式。您可以使用 RegularExpressions 命名空間 (Namespace) 中的可用物件,將字串與指定的模式比較、用另一個字串取代指定的字串,或是只擷取格式化字串的一部分。在這個範例中,我們會建構一個用來驗證電子郵件地址的模式。


基本需求

下最清單提列了建議使用的硬體、軟體、網路基礎架構以及所需安裝的 Service Pack:
  • Microsoft Visual C# .NET
本文假設您已:
  • 對 Visual C# .NET 有基本瞭解
  • 對規則運算式語法有基本瞭解

使用規則運算式比對模式

  1. 開啟 Visual Studio .NET。
  2. 建立一個新的 Visual C# 「主控台應用程式」(Console Application)。
  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 物件,或是要列印錯誤訊息。如果成功,會顯示 Match 物件 Groups 集合中名為 User 和 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 鍵或是從 [偵錯] 功能表中選取 [啟動] 。若要用命令列引數啟動應用程式,兩種有方式:
    1. 啟動 [命令] 視窗並且巡覽至專案所在資料夾之下的 [bin\debug] 資料夾。然後輸入可執行檔的名稱,後面接著要測試的電子郵件地址。
    2. 找出這個專案的可執行檔,並且將它拖曳到工作列上的 [開始] ... [執行] 視窗。加入要驗證的電子郵件地址,然後按 [確定]

參考







本文件是根據 Microsoft Knowledgebase 文件編號 Q308252 翻譯的。若要參考原始英文文件內容,請至以下網址:

http://support.microsoft.com/support/kb/articles/Q308/2/52.asp (http://support.microsoft.com/kb/308252/en-us?ln=en-us&sd=gn&fr=0)

這篇文章中的資訊適用於:
  • Microsoft Visual C# .NET 2002 Standard Edition
關鍵字:?
kbhowto kbhowtomaster KB308252
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。