Regex.IsMatch 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
指出正則表示式是否在輸入字串中尋找相符專案。
多載
IsMatch(String, String, RegexOptions, TimeSpan) |
指出指定的正則表示式是否使用指定的比對選項和超時時間間隔,在指定的輸入字串中尋找相符專案。 |
IsMatch(ReadOnlySpan<Char>, String, RegexOptions, TimeSpan) |
指出指定的正則表示式是否使用指定的比對選項和超時時間間隔,在指定的輸入範圍中尋找相符專案。 |
IsMatch(String, String, RegexOptions) |
指出指定的正則表示式是否使用指定的比對選項,在指定的輸入字元串中尋找相符專案。 |
IsMatch(ReadOnlySpan<Char>, String, RegexOptions) |
指出指定的正則表示式是否使用指定的比對選項,在指定的輸入範圍中尋找相符專案。 |
IsMatch(String, String) |
指出指定的正則表示式是否在指定的輸入字串中尋找相符專案。 |
IsMatch(ReadOnlySpan<Char>, Int32) |
指出 Regex 建構函式中指定的正規表示式是否在指定的輸入範圍中尋找相符專案。 |
IsMatch(ReadOnlySpan<Char>, String) |
指出指定的正則表示式是否在指定的輸入範圍中尋找相符專案。 |
IsMatch(String, Int32) |
指出 Regex 建構函式中指定的正則表示式是否在指定的輸入字串中尋找相符專案,從字串中指定的起始位置開始。 |
IsMatch(String) |
指出 Regex 建構函式中指定的正則表示式是否在指定的輸入字串中尋找相符專案。 |
IsMatch(ReadOnlySpan<Char>) |
指出 Regex 建構函式中指定的正規表示式是否在指定的輸入範圍中尋找相符專案。 |
IsMatch(String, String, RegexOptions, TimeSpan)
指出指定的正則表示式是否使用指定的比對選項和超時時間間隔,在指定的輸入字串中尋找相符專案。
public:
static bool IsMatch(System::String ^ input, System::String ^ pattern, System::Text::RegularExpressions::RegexOptions options, TimeSpan matchTimeout);
public static bool IsMatch (string input, string pattern, System.Text.RegularExpressions.RegexOptions options, TimeSpan matchTimeout);
static member IsMatch : string * string * System.Text.RegularExpressions.RegexOptions * TimeSpan -> bool
Public Shared Function IsMatch (input As String, pattern As String, options As RegexOptions, matchTimeout As TimeSpan) As Boolean
參數
- input
- String
要搜尋相符專案的字串。
- pattern
- String
要比對的正則表達式模式。
- options
- RegexOptions
列舉值的位元組合,提供比對的選項。
- matchTimeout
- TimeSpan
超時時間間隔,或 InfiniteMatchTimeout,表示方法不應該逾時。
傳回
如果正則表達式找到相符專案,true
;否則,false
。
例外狀況
發生正則表達式剖析錯誤。
input
或 pattern
null
。
範例
下列範例說明如何使用 IsMatch(String, String, RegexOptions, TimeSpan) 方法來判斷字串是否為有效的部分編號。 正則表達式假設部分編號具有由連字元分隔的三組字元所組成的特定格式。 第一個集合包含四個字元,必須包含英數位元,後面接著兩個數位字元,後面接著英數位元。 第二組由三個字元組成,必須是數值。 第三組由四個字元組成,必須有三個數位字元,後面接著英數位元。 比對正則表示式模式應該牽涉到透過輸入字串進行最少搜尋,因此方法會設定 500 毫秒的超時時間間隔。
string[] partNumbers = [ "1298-673-4192", "A08Z-931-468a",
"_A90-123-129X", "12345-KKA-1230",
"0919-2893-1256" ];
string pattern = @"^[A-Z0-9]\d{2}[A-Z0-9](-\d{3}){2}[A-Z0-9]$";
foreach (string partNumber in partNumbers)
try
{
bool isMatch = Regex.IsMatch(partNumber, pattern, RegexOptions.IgnoreCase, TimeSpan.FromMilliseconds(500));
Console.WriteLine($"{partNumber} {(isMatch ? "is" : "is not")} a valid part number.");
}
catch (RegexMatchTimeoutException e)
{
Console.WriteLine($"Timeout after {e.MatchTimeout} seconds matching {e.Input}.");
}
// The example displays the following output:
// 1298-673-4192 is a valid part number.
// A08Z-931-468a is a valid part number.
// _A90-123-129X is not a valid part number.
// 12345-KKA-1230 is not a valid part number.
// 0919-2893-1256 is not a valid part number.
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim partNumbers() As String = { "1298-673-4192", "A08Z-931-468a",
"_A90-123-129X", "12345-KKA-1230",
"0919-2893-1256" }
Dim pattern As String = "^[A-Z0-9]\d{2}[A-Z0-9](-\d{3}){2}[A-Z0-9]$"
For Each partNumber As String In partNumbers
Try
Console.WriteLine("{0} {1} a valid part number.",
partNumber, _
IIF(Regex.IsMatch(partNumber, pattern, RegexOptions.IgnoreCase), _
"is", "is not"),
TimeSpan.FromMilliseconds(500))
Catch e As RegexMatchTimeoutException
Console.WriteLine("Timeout after {0} seconds matching {1}.",
e.MatchTimeout, e.Input)
End Try
Next
End Sub
End Module
' The example displays the following output:
' 1298-673-4192 is a valid part number.
' A08Z-931-468a is a valid part number.
' _A90-123-129X is not a valid part number.
' 12345-KKA-1230 is not a valid part number.
' 0919-2893-1256 is not a valid part number.
正規表示式模式為:
^[A-Z0-9]\d{2}[A-Z0-9](-\d{3}){2}[A-Z0-9]$
下表顯示正則表示式模式的解譯方式。
模式 | 描述 |
---|---|
^ |
在字串開頭開始比對。 |
[A-Z0-9] |
比對從 A 到 Z 的任何單一字母字元,或任何數值字元。 |
\d{2} |
比對兩個數值字元。 |
[A-Z0-9] |
比對從 A 到 Z 的任何單一字母字元,或任何數值字元。 |
- |
比對連字元。 |
\d{3} |
完全比對三個數位字元。 |
(-\d{3}){2} |
尋找連字元後面接著三個數值字元,並比對此模式的兩個相符專案。 |
[A-Z0-9] |
比對從 A 到 Z 的任何單一字母字元,或任何數值字元。 |
$ |
結束字串結尾的相符專案。 |
呼叫 IsMatch(String, String, RegexOptions, TimeSpan) 方法,並將 options
參數設定為 RegexOptions.IgnoreCase 相當於定義下列正則表示式:
[a-zA-Z0-9]\d{2}[a-zA-Z0-9](-\d{3}){2}[A-Za-z0-9]
如需比較,請參閱 IsMatch(String, String) 方法的範例。
備註
IsMatch 方法通常用於驗證字串,或確保字串符合特定模式,而不擷取該字串以供後續操作。 如果您想要判斷一或多個字串是否符合正則表示式模式,然後擷取它們以進行後續操作,請呼叫 Match 或 Matches 方法。
靜態 IsMatch(String, String, RegexOptions, TimeSpan) 方法相當於使用 pattern
所指定的正則表示式模式和 options
所指定的正則表達式選項,以及呼叫 IsMatch(String) 實例方法所指定的正則表達式模式來建構 Regex 物件。 此正則表達式模式會快取以供正則表達式引擎快速擷取。
pattern
參數是由正則表達式語言專案所組成,這些元素會以符號方式描述要比對的字串。 如需正規表示式的詳細資訊,請參閱 .NET 正則表示式 和 正則表示式語言 - 快速參考。
matchTimeout
參數會指定模式比對方法在逾時之前應該嘗試尋找相符項目的時間長度。設定超時時間間隔可防止依賴過度回溯的正則表達式在處理包含接近相符項目的輸入時停止回應。 如需詳細資訊,請參閱 正則表示式的最佳做法 和 回溯。 如果該時間間隔中找不到相符專案,此方法會擲回 RegexMatchTimeoutException 例外狀況。
matchTimeout
會覆寫針對方法執行的應用程式域所定義的任何預設逾時值。
給呼叫者的注意事項
我們建議您將 matchTimeout
參數設定為適當的值,例如兩秒。 如果您藉由指定 InfiniteMatchTimeout來停用逾時,正則表達式引擎會提供稍微更好的效能。 不過,您應該只在下列情況下停用逾時:
正則表達式所處理的輸入衍生自已知且受信任的來源,或包含靜態文字時。 這會排除使用者動態輸入的文字。
當正則表達式模式經過徹底測試,以確保其有效率地處理相符專案、不相符專案和接近相符專案時。
當正則表達式模式不包含任何已知在處理接近相符專案時造成過度回溯的語言元素。
另請參閱
適用於
IsMatch(ReadOnlySpan<Char>, String, RegexOptions, TimeSpan)
指出指定的正則表示式是否使用指定的比對選項和超時時間間隔,在指定的輸入範圍中尋找相符專案。
public:
static bool IsMatch(ReadOnlySpan<char> input, System::String ^ pattern, System::Text::RegularExpressions::RegexOptions options, TimeSpan matchTimeout);
public static bool IsMatch (ReadOnlySpan<char> input, string pattern, System.Text.RegularExpressions.RegexOptions options, TimeSpan matchTimeout);
static member IsMatch : ReadOnlySpan<char> * string * System.Text.RegularExpressions.RegexOptions * TimeSpan -> bool
Public Shared Function IsMatch (input As ReadOnlySpan(Of Char), pattern As String, options As RegexOptions, matchTimeout As TimeSpan) As Boolean
參數
- input
- ReadOnlySpan<Char>
要搜尋相符項目的範圍。
- pattern
- String
要比對的正則表達式模式。
- options
- RegexOptions
列舉值的位元組合,提供比對的選項。
- matchTimeout
- TimeSpan
超時時間間隔,或 InfiniteMatchTimeout,表示方法不應該逾時。
傳回
如果正則表達式找到相符專案,true
;否則,false
。
例外狀況
發生正則表達式剖析錯誤。
pattern
null
options
不是有效的 RegexOptions 值,或 matchTimeout
為負值、零或大於大約 24 天。
適用於
IsMatch(String, String, RegexOptions)
指出指定的正則表示式是否使用指定的比對選項,在指定的輸入字元串中尋找相符專案。
public:
static bool IsMatch(System::String ^ input, System::String ^ pattern, System::Text::RegularExpressions::RegexOptions options);
public static bool IsMatch (string input, string pattern, System.Text.RegularExpressions.RegexOptions options);
static member IsMatch : string * string * System.Text.RegularExpressions.RegexOptions -> bool
Public Shared Function IsMatch (input As String, pattern As String, options As RegexOptions) As Boolean
參數
- input
- String
要搜尋相符專案的字串。
- pattern
- String
要比對的正則表達式模式。
- options
- RegexOptions
列舉值的位元組合,提供比對的選項。
傳回
如果正則表達式找到相符專案,true
;否則,false
。
例外狀況
發生正則表達式剖析錯誤。
input
或 pattern
null
。
options
不是有效的 RegexOptions 值。
發生逾時。 如需逾時的詳細資訊,請參閱一節。
範例
下列範例說明如何使用 IsMatch(String, String) 方法來判斷字串是否為有效的部分編號。 正則表達式假設部分編號具有由連字元分隔的三組字元所組成的特定格式。 第一個集合包含四個字元,必須包含英數位元,後面接著兩個數位字元,後面接著英數位元。 第二組由三個字元組成,必須是數值。 第三組由四個字元組成,必須有三個數位字元,後面接著英數位元。
string[] partNumbers = [ "1298-673-4192", "A08Z-931-468a",
"_A90-123-129X", "12345-KKA-1230",
"0919-2893-1256" ];
string pattern = @"^[A-Z0-9]\d{2}[A-Z0-9](-\d{3}){2}[A-Z0-9]$";
foreach (string partNumber in partNumbers)
Console.WriteLine("{0} {1} a valid part number.",
partNumber,
Regex.IsMatch(partNumber, pattern, RegexOptions.IgnoreCase) ? "is" : "is not");
// The example displays the following output:
// 1298-673-4192 is a valid part number.
// A08Z-931-468a is a valid part number.
// _A90-123-129X is not a valid part number.
// 12345-KKA-1230 is not a valid part number.
// 0919-2893-1256 is not a valid part number.
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim partNumbers() As String = { "1298-673-4192", "A08Z-931-468a", _
"_A90-123-129X", "12345-KKA-1230", _
"0919-2893-1256" }
Dim pattern As String = "^[A-Z0-9]\d{2}[A-Z0-9](-\d{3}){2}[A-Z0-9]$"
For Each partNumber As String In partNumbers
Console.WriteLine("{0} {1} a valid part number.", _
partNumber, _
IIF(Regex.IsMatch(partNumber, pattern, RegexOptions.IgnoreCase), _
"is", "is not"))
Next
End Sub
End Module
' The example displays the following output:
' 1298-673-4192 is a valid part number.
' A08Z-931-468a is a valid part number.
' _A90-123-129X is not a valid part number.
' 12345-KKA-1230 is not a valid part number.
' 0919-2893-1256 is not a valid part number.
正規表示式模式為:
^[A-Z0-9]\d{2}[A-Z0-9](-\d{3}){2}[A-Z0-9]$
下表顯示正則表示式模式的解譯方式。
模式 | 描述 |
---|---|
^ |
在字串開頭開始比對。 |
[A-Z0-9] |
比對從 A 到 Z 的任何單一字母字元,或任何數值字元。 |
\d{2} |
比對兩個數值字元。 |
[A-Z0-9] |
比對從 A 到 Z 的任何單一字母字元,或任何數值字元。 |
- |
比對連字元。 |
\d{3} |
完全比對三個數位字元。 |
(-\d{3}){2} |
尋找後面接著三個數值字元的連字元,並比對此模式的兩個相符專案。 |
[A-Z0-9] |
比對從 A 到 Z 的任何單一字母字元,或任何數值字元。 |
$ |
結束字串結尾的相符專案。 |
呼叫 IsMatch(String, String, RegexOptions) 方法,並將 options
參數設定為 RegexOptions.IgnoreCase 相當於定義下列正則表示式:
[a-zA-Z0-9]\d{2}[a-zA-Z0-9](-\d{3}){2}[A-Za-z0-9]
如需比較,請參閱 IsMatch(String, String) 方法的範例。
備註
IsMatch 方法通常用於驗證字串,或確保字串符合特定模式,而不擷取該字串以供後續操作。 如果您想要判斷一或多個字串是否符合正則表示式模式,然後擷取它們以進行後續操作,請呼叫 Match 或 Matches 方法。
靜態 IsMatch(String, String, RegexOptions) 方法相當於使用 pattern
所指定的正則表示式模式和 options
所指定的正則表達式選項,以及呼叫 IsMatch(String) 實例方法所指定的正則表達式模式來建構 Regex 物件。 此正則表達式模式會快取以供正則表達式引擎快速擷取。
pattern
參數是由正則表達式語言專案所組成,這些元素會以符號方式描述要比對的字串。 如需正規表示式的詳細資訊,請參閱 .NET 正則表示式 和 正則表示式語言 - 快速參考。
如果比對作業的運行時間超過呼叫方法的應用程式域所指定的超時時間間隔,就會擲回 RegexMatchTimeoutException 例外狀況。 如果在應用程式域的屬性中未定義逾時,或逾時值 Regex.InfiniteMatchTimeout,則不會擲回任何例外狀況。
給呼叫者的注意事項
這個方法會在間隔後逾時,這個間隔等於呼叫它之應用程式域的預設逾時值。 如果尚未為應用程式域定義逾時值,則會使用 InfiniteMatchTimeout值,以防止方法逾時。 確認模式比對的建議靜態方法是 IsMatch(String, String, RegexOptions, TimeSpan),這可讓您設定超時時間間隔。
另請參閱
適用於
IsMatch(ReadOnlySpan<Char>, String, RegexOptions)
指出指定的正則表示式是否使用指定的比對選項,在指定的輸入範圍中尋找相符專案。
public:
static bool IsMatch(ReadOnlySpan<char> input, System::String ^ pattern, System::Text::RegularExpressions::RegexOptions options);
public static bool IsMatch (ReadOnlySpan<char> input, string pattern, System.Text.RegularExpressions.RegexOptions options);
static member IsMatch : ReadOnlySpan<char> * string * System.Text.RegularExpressions.RegexOptions -> bool
Public Shared Function IsMatch (input As ReadOnlySpan(Of Char), pattern As String, options As RegexOptions) As Boolean
參數
- input
- ReadOnlySpan<Char>
要搜尋相符項目的範圍。
- pattern
- String
要比對的正則表達式模式。
- options
- RegexOptions
列舉值的位元組合,提供比對的選項。
傳回
如果正則表達式找到相符專案,true
;否則,false
。
例外狀況
發生正則表達式剖析錯誤。
pattern
null
options
不在有效的 RegexOptions 值中。
適用於
IsMatch(String, String)
指出指定的正則表示式是否在指定的輸入字串中尋找相符專案。
public:
static bool IsMatch(System::String ^ input, System::String ^ pattern);
public static bool IsMatch (string input, string pattern);
static member IsMatch : string * string -> bool
Public Shared Function IsMatch (input As String, pattern As String) As Boolean
參數
- input
- String
要搜尋相符專案的字串。
- pattern
- String
要比對的正則表達式模式。
傳回
如果正則表達式找到相符專案,true
;否則,false
。
例外狀況
發生正則表達式剖析錯誤。
input
或 pattern
null
。
發生逾時。 如需逾時的詳細資訊,請參閱一節。
範例
下列範例說明如何使用 IsMatch(String, String) 方法來判斷字串是否為有效的部分編號。 正則表達式假設部分編號具有由連字元分隔的三組字元所組成的特定格式。 第一個集合包含四個字元,必須包含英數位元,後面接著兩個數位字元,後面接著英數位元。 第二組由三個字元組成,必須是數值。 第三組由四個字元組成,必須有三個數位字元,後面接著英數位元。
string[] partNumbers = [ "1298-673-4192", "A08Z-931-468A",
"_A90-123-129X", "12345-KKA-1230",
"0919-2893-1256" ];
string pattern = @"^[a-zA-Z0-9]\d{2}[a-zA-Z0-9](-\d{3}){2}[A-Za-z0-9]$";
foreach (string partNumber in partNumbers)
Console.WriteLine($"{partNumber} {(Regex.IsMatch(partNumber, pattern) ? "is" : "is not")} " +
$"a valid part number.");
// The example displays the following output:
// 1298-673-4192 is a valid part number.
// A08Z-931-468A is a valid part number.
// _A90-123-129X is not a valid part number.
// 12345-KKA-1230 is not a valid part number.
// 0919-2893-1256 is not a valid part number.
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim partNumbers() As String = { "1298-673-4192", "A08Z-931-468A", _
"_A90-123-129X", "12345-KKA-1230", _
"0919-2893-1256" }
Dim pattern As String = "^[a-zA-Z0-9]\d{2}[a-zA-Z0-9](-\d{3}){2}[A-Za-z0-9]$"
For Each partNumber As String In partNumbers
Console.WriteLine("{0} {1} a valid part number.", _
partNumber, _
IIF(Regex.IsMatch(partNumber, pattern), "is", "is not"))
Next
End Sub
End Module
' The example displays the following output:
' 1298-673-4192 is a valid part number.
' A08Z-931-468A is a valid part number.
' _A90-123-129X is not a valid part number.
' 12345-KKA-1230 is not a valid part number.
' 0919-2893-1256 is not a valid part number.
正規表示式模式為:
^[a-zA-Z0-9]\d{2}[a-zA-Z0-9](-\d{3}){2}[A-Za-z0-9]$
下表顯示正則表示式模式的解譯方式。
模式 | 描述 |
---|---|
^ |
在行開頭開始比對。 |
[a-zA-Z0-9] |
比對單一字母字元(a 到 z 或 A 到 Z ) 或數值字元。 |
\d{2} |
比對兩個數值字元。 |
[a-zA-Z0-9] |
比對單一字母字元(a 到 z 或 A 到 Z ) 或數值字元。 |
- |
比對連字元。 |
\d{3} |
完全比對三個數位字元。 |
(-\d{3}){2} |
尋找連字元後面接著三個數值字元,並比對此模式的兩個相符專案。 |
[a-zA-Z0-9] |
比對單一字母字元(a 到 z 或 A 到 Z ) 或數值字元。 |
$ |
在行尾端結束比對。 |
備註
IsMatch 方法通常用於驗證字串,或確保字串符合特定模式,而不擷取該字串以供後續操作。 如果您想要判斷一或多個字串是否符合正則表示式模式,然後擷取它們以進行後續操作,請呼叫 Match 或 Matches 方法。
靜態 IsMatch(String, String) 方法相當於使用 pattern
所指定的正則表示式模式建構 Regex 物件,並呼叫 IsMatch(String) 實例方法。 此正則表達式模式會快取以供正則表達式引擎快速擷取。
pattern
參數是由正則表達式語言專案所組成,這些元素會以符號方式描述要比對的字串。 如需正規表示式的詳細資訊,請參閱 .NET 正則表示式 和 正則表示式語言 - 快速參考。
如果比對作業的運行時間超過呼叫方法的應用程式域所指定的超時時間間隔,就會擲回 RegexMatchTimeoutException 例外狀況。 如果在應用程式域的屬性中未定義逾時,或逾時值 Regex.InfiniteMatchTimeout,則不會擲回任何例外狀況。
給呼叫者的注意事項
這個方法會在間隔後逾時,這個間隔等於呼叫 方法之應用程式域的預設逾時值。 如果尚未為應用程式域定義逾時值,則會使用 InfiniteMatchTimeout值,以防止方法逾時。 確認模式比對的建議靜態方法是 IsMatch(String, String, RegexOptions, TimeSpan),這可讓您設定超時時間間隔。
另請參閱
適用於
IsMatch(ReadOnlySpan<Char>, Int32)
指出 Regex 建構函式中指定的正規表示式是否在指定的輸入範圍中尋找相符專案。
public:
bool IsMatch(ReadOnlySpan<char> input, int startat);
public bool IsMatch (ReadOnlySpan<char> input, int startat);
member this.IsMatch : ReadOnlySpan<char> * int -> bool
Public Function IsMatch (input As ReadOnlySpan(Of Char), startat As Integer) As Boolean
參數
- input
- ReadOnlySpan<Char>
要搜尋相符項目的範圍。
- startat
- Int32
要開始搜尋之以零起始的字元位置。
傳回
如果正則表達式找到相符專案,true
;否則,false
。
例外狀況
適用於
IsMatch(ReadOnlySpan<Char>, String)
指出指定的正則表示式是否在指定的輸入範圍中尋找相符專案。
public:
static bool IsMatch(ReadOnlySpan<char> input, System::String ^ pattern);
public static bool IsMatch (ReadOnlySpan<char> input, string pattern);
static member IsMatch : ReadOnlySpan<char> * string -> bool
Public Shared Function IsMatch (input As ReadOnlySpan(Of Char), pattern As String) As Boolean
參數
- input
- ReadOnlySpan<Char>
要搜尋相符項目的範圍。
- pattern
- String
要比對的正則表達式模式。
傳回
如果正則表達式找到相符專案,true
;否則,false
。
例外狀況
發生正則表達式剖析錯誤。
pattern
null
適用於
IsMatch(String, Int32)
指出 Regex 建構函式中指定的正則表示式是否在指定的輸入字串中尋找相符專案,從字串中指定的起始位置開始。
public:
bool IsMatch(System::String ^ input, int startat);
public bool IsMatch (string input, int startat);
member this.IsMatch : string * int -> bool
Public Function IsMatch (input As String, startat As Integer) As Boolean
參數
- input
- String
要搜尋相符專案的字串。
- startat
- Int32
要開始搜尋的字元位置。
傳回
如果正則表達式找到相符專案,true
;否則,false
。
例外狀況
input
null
。
startat
小於零或大於 input
長度。
發生逾時。 如需逾時的詳細資訊,請參閱一節。
範例
下列範例說明如何使用 IsMatch(String, Int32) 方法來判斷字串是否為有效的部分編號。 它會搜尋在字串中緊接冒號 (:) 個字元的元件編號。 IndexOf(Char) 方法可用來判斷冒號字元的位置,然後傳遞給 IsMatch(String, Int32) 方法。 正則表達式假設部分編號具有由連字元分隔的三組字元所組成的特定格式。 第一個集合包含四個字元,必須包含英數位元,後面接著兩個數位字元,後面接著英數位元。 第二組由三個字元組成,必須是數值。 第三組由四個字元組成,必須有三個數位字元,後面接著英數位元。
string[] partNumbers = [ "Part Number: 1298-673-4192", "Part No: A08Z-931-468A",
"_A90-123-129X", "123K-000-1230",
"SKU: 0919-2893-1256" ];
Regex rgx = MyRegex();
foreach (string partNumber in partNumbers)
{
int start = partNumber.IndexOf(':');
if (start >= 0)
{
Console.WriteLine($"{partNumber} {(rgx.IsMatch(partNumber, start) ? "is" : "is not")} a valid part number.");
}
else
{
Console.WriteLine("Cannot find starting position in {0}.", partNumber);
}
}
// The example displays the following output:
// Part Number: 1298-673-4192 is a valid part number.
// Part No: A08Z-931-468A is a valid part number.
// Cannot find starting position in _A90-123-129X.
// Cannot find starting position in 123K-000-1230.
// SKU: 0919-2893-1256 is not a valid part number.
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim partNumbers() As String = { "Part Number: 1298-673-4192", "Part No: A08Z-931-468A", _
"_A90-123-129X", "123K-000-1230", _
"SKU: 0919-2893-1256" }
Dim rgx As New Regex("[a-zA-Z0-9]\d{2}[a-zA-Z0-9](-\d{3}){2}[A-Za-z0-9]$")
For Each partNumber As String In partNumbers
Dim start As Integer = partNumber.IndexOf(":"c)
If start >= 0 Then
Console.WriteLine("{0} {1} a valid part number.", _
partNumber, _
IIF(rgx.IsMatch(partNumber, start), "is", "is not"))
Else
Console.WriteLine("Cannot find starting position in {0}.", partNumber)
End If
Next
End Sub
End Module
' The example displays the following output:
' Part Number: 1298-673-4192 is a valid part number.
' Part No: A08Z-931-468A is a valid part number.
' Cannot find starting position in _A90-123-129X.
' Cannot find starting position in 123K-000-1230.
' SKU: 0919-2893-1256 is not a valid part number.
正規表示式模式為:
[a-zA-Z0-9]\d{2}[a-zA-Z0-9](-\d{3}){2}[A-Za-z0-9]$
下表顯示正則表示式模式的解譯方式。
模式 | 描述 |
---|---|
[a-zA-Z0-9] |
比對單一字母字元(a 到 z 或 A 到 Z ) 或數值字元。 |
\d{2} |
比對兩個數值字元。 |
[a-zA-Z0-9] |
比對單一字母字元(a 到 z 或 A 到 Z ) 或數值字元。 |
- |
比對連字元。 |
\d{3} |
完全比對三個數位字元。 |
(-\d{3}){2} |
尋找連字元後面接著三個數值字元,並比對此模式的兩個相符專案。 |
[a-zA-Z0-9] |
比對單一字母字元(a 到 z 或 A 到 Z ) 或數值字元。 |
$ |
在行尾端結束比對。 |
備註
IsMatch 方法通常用於驗證字串,或確保字串符合特定模式,而不擷取該字串以供後續操作。 如果您想要判斷一或多個字串是否符合正則表示式模式,然後擷取它們以進行後續操作,請呼叫 Match 或 Matches 方法。
如需 startat
的詳細資訊,請參閱 Match(String, Int32)的一節。
如果比對作業的運行時間超過 Regex.Regex(String, RegexOptions, TimeSpan) 建構函式指定的超時時間間隔,就會擲回 RegexMatchTimeoutException 例外狀況。 如果您在呼叫建構函式時未設定超時時間間隔,則如果作業超過為建立 Regex 對象的應用程式域所建立的任何逾時值,則會擲回例外狀況。 如果在 Regex 建構函式呼叫或應用程式域的屬性中未定義逾時,或逾時值 Regex.InfiniteMatchTimeout,則不會擲回任何例外狀況。
另請參閱
適用於
IsMatch(String)
指出 Regex 建構函式中指定的正則表示式是否在指定的輸入字串中尋找相符專案。
public:
bool IsMatch(System::String ^ input);
public bool IsMatch (string input);
member this.IsMatch : string -> bool
Public Function IsMatch (input As String) As Boolean
參數
- input
- String
要搜尋相符專案的字串。
傳回
如果正則表達式找到相符專案,true
;否則,false
。
例外狀況
input
null
。
發生逾時。 如需逾時的詳細資訊,請參閱一節。
範例
下列範例說明如何使用 IsMatch(String) 方法來判斷字串是否為有效的部分編號。 正則表達式假設部分編號具有由連字元分隔的三組字元所組成的特定格式。 第一個集合包含四個字元,必須包含英數位元,後面接著兩個數位字元,後面接著英數位元。 第二組由三個字元組成,必須是數值。 第三組由四個字元組成,必須有三個數位字元,後面接著英數位元。
string[] partNumbers = [ "1298-673-4192", "A08Z-931-468A",
"_A90-123-129X", "12345-KKA-1230",
"0919-2893-1256" ];
Regex rgx = new Regex(@"^[a-zA-Z0-9]\d{2}[a-zA-Z0-9](-\d{3}){2}[A-Za-z0-9]$");
foreach (string partNumber in partNumbers)
Console.WriteLine($"{partNumber} {(rgx.IsMatch(partNumber) ? "is" : "is not")} a valid part number.");
// The example displays the following output:
// 1298-673-4192 is a valid part number.
// A08Z-931-468A is a valid part number.
// _A90-123-129X is not a valid part number.
// 12345-KKA-1230 is not a valid part number.
// 0919-2893-1256 is not a valid part number.
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim partNumbers() As String = { "1298-673-4192", "A08Z-931-468A", _
"_A90-123-129X", "12345-KKA-1230", _
"0919-2893-1256" }
Dim rgx As New Regex("^[a-zA-Z0-9]\d{2}[a-zA-Z0-9](-\d{3}){2}[A-Za-z0-9]$")
For Each partNumber As String In partNumbers
Console.WriteLine("{0} {1} a valid part number.", _
partNumber, _
IIF(rgx.IsMatch(partNumber), "is", "is not"))
Next
End Sub
End Module
' The example displays the following output:
' 1298-673-4192 is a valid part number.
' A08Z-931-468A is a valid part number.
' _A90-123-129X is not a valid part number.
' 12345-KKA-1230 is not a valid part number.
' 0919-2893-1256 is not a valid part number.
正規表示式模式為:
^[a-zA-Z0-9]\d{2}[a-zA-Z0-9](-\d{3}){2}[A-Za-z0-9]$
下表顯示正則表示式模式的解譯方式。
模式 | 描述 |
---|---|
^ |
在行開頭開始比對。 |
[a-zA-Z0-9] |
比對單一字母字元(a 到 z 或 A 到 Z ) 或數值字元。 |
\d{2} |
比對兩個數值字元。 |
[a-zA-Z0-9] |
比對單一字母字元(a 到 z 或 A 到 Z ) 或數值字元。 |
- |
比對連字元。 |
\d{3} |
完全比對三個數位字元。 |
(-\d{3}){2} |
尋找連字元後面接著三個數值字元,並比對此模式的兩個相符專案。 |
[a-zA-Z0-9] |
比對單一字母字元(a 到 z 或 A 到 Z ) 或數值字元。 |
$ |
在行尾端結束比對。 |
備註
IsMatch 方法通常用於驗證字串,或確保字串符合特定模式,而不擷取該字串以供後續操作。 如果您想要判斷一或多個字串是否符合正則表示式模式,然後擷取它們以進行後續操作,請呼叫 Match 或 Matches 方法。
如果比對作業的運行時間超過 Regex.Regex(String, RegexOptions, TimeSpan) 建構函式指定的超時時間間隔,就會擲回 RegexMatchTimeoutException 例外狀況。 如果您在呼叫建構函式時未設定超時時間間隔,則如果作業超過為建立 Regex 對象的應用程式域所建立的任何逾時值,則會擲回例外狀況。 如果在 Regex 建構函式呼叫或應用程式域的屬性中未定義逾時,或逾時值 Regex.InfiniteMatchTimeout,則不會擲回任何例外狀況。
另請參閱
適用於
IsMatch(ReadOnlySpan<Char>)
指出 Regex 建構函式中指定的正規表示式是否在指定的輸入範圍中尋找相符專案。
public:
bool IsMatch(ReadOnlySpan<char> input);
public bool IsMatch (ReadOnlySpan<char> input);
member this.IsMatch : ReadOnlySpan<char> -> bool
Public Function IsMatch (input As ReadOnlySpan(Of Char)) As Boolean
參數
- input
- ReadOnlySpan<Char>
要搜尋相符項目的範圍。
傳回
如果正則表達式找到相符專案,true
;否則,false
。