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>, String) |
指出指定的正則運算式是否在指定的輸入範圍中尋找相符專案。 |
IsMatch(ReadOnlySpan<Char>, Int32) |
指出 Regex 建構函式中指定的正則運算式是否在指定的輸入範圍中尋找相符專案。 |
IsMatch(String) |
表示 Regex 建構函式中指定的規則運算式是否要在指定的輸入字串中尋找相符項目。 |
IsMatch(ReadOnlySpan<Char>) |
指出 Regex 建構函式中指定的正則運算式是否在指定的輸入範圍中尋找相符專案。 |
IsMatch(String, Int32) |
表示 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 毫秒的逾時間隔。
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
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 {
Console.WriteLine("{0} {1} a valid part number.",
partNumber,
Regex.IsMatch(partNumber, pattern, RegexOptions.IgnoreCase)
? "is" : "is not", TimeSpan.FromMilliseconds(500));
}
catch (RegexMatchTimeoutException e) {
Console.WriteLine("Timeout after {0} seconds matching {1}.",
e.MatchTimeout, 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)將 參數設為 RegexOptions.IgnoreCase 的 呼叫 方法 options
相當於定義下列正則運算式:
[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
指定的正則運算式選項來建構 Regex 物件,並呼叫 IsMatch(String) 實例方法。 此正則運算式模式會快取,以供正則運算式引擎快速擷取。
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) 方法來判斷字串是否為有效的元件編號。 正則運算式假設部分編號具有特定格式,由三組以連字號分隔的字元組成。 第一個集合包含四個字元,必須包含英數位元,後面接著兩個數字字元,後面接著英數位元。 第二組是由三個字元所組成,必須是數值。 第三組由四個字元組成,必須有三個數字字元,後面接著英數位元。
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
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)呼叫 參數設為 RegexOptions.IgnoreCase 的方法 options
相當於定義下列正則運算式:
[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
指定的正則運算式選項來建構 Regex 物件,並呼叫 IsMatch(String) 實例方法。 這個正則運算式模式會快取以供正則運算式引擎快速擷取。
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) 方法來判斷字串是否為有效的元件編號。 正則運算式假設元件編號具有由連字號分隔的三組字元所組成的特定格式。 第一個包含四個字元的第一個集合必須包含英數位元,後面接著兩個數字字元,後面接著英數位元。 第二個集合是由三個字元所組成,必須是數值。 第三組由四個字元組成,必須有三個數字字元,後面接著英數位元。
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
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("{0} {1} a valid part number.",
partNumber,
Regex.IsMatch(partNumber, pattern) ? "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-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>, 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(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(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) 方法來判斷字串是否為有效的元件編號。 正則運算式假設元件編號具有由連字號分隔的三組字元所組成的特定格式。 第一個包含四個字元的第一個集合必須包含英數位元,後面接著兩個數字字元,後面接著英數位元。 第二個集合是由三個字元所組成,必須是數值。 第三組由四個字元組成,必須有三個數字字元,後面接著英數位元。
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
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("{0} {1} a valid part number.",
partNumber,
rgx.IsMatch(partNumber) ? "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 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 方法。
如果比對作業的執行時間超出 RegexMatchTimeoutException 建構函式所指定的逾時間隔,就會擲回 Regex.Regex(String, RegexOptions, TimeSpan) 例外狀況。 呼叫建構函式時若未設定逾時間隔,則如果作業超過為建立 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
。
例外狀況
適用於
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) 方法。 正則運算式假設元件編號具有由連字號分隔的三組字元所組成的特定格式。 第一個包含四個字元的第一個集合必須包含英數位元,後面接著兩個數字字元,後面接著英數位元。 第二個集合是由三個字元所組成,必須是數值。 第三組由四個字元組成,必須有三個數字字元,後面接著英數位元。
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string[] partNumbers= { "Part Number: 1298-673-4192", "Part No: A08Z-931-468A",
"_A90-123-129X", "123K-000-1230",
"SKU: 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)
{
int start = partNumber.IndexOf(':');
if (start >= 0)
{
Console.WriteLine("{0} {1} a valid part number.",
partNumber,
rgx.IsMatch(partNumber, start) ? "is" : "is not");
}
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) 一節。
如果比對作業的執行時間超出 RegexMatchTimeoutException 建構函式所指定的逾時間隔,就會擲回 Regex.Regex(String, RegexOptions, TimeSpan) 例外狀況。 呼叫建構函式時若未設定逾時間隔,則如果作業超過為建立 Regex 物件的應用程式定義域設定的任何逾時值,就會擲回例外狀況。 如果在 Regex 建構函式呼叫或應用程式定義域的屬性中未定義任何逾時,或逾時值是 Regex.InfiniteMatchTimeout,則不擲回任何例外狀況。
另請參閱
適用於
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應