Regex.IsMatch Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Geeft aan of de reguliere expressie een overeenkomst vindt in de invoertekenreeks.
Overloads
| Name | Description |
|---|---|
| IsMatch(String) |
Geeft aan of de reguliere expressie die is opgegeven in de Regex constructor een overeenkomst vindt in een opgegeven invoertekenreeks. |
| IsMatch(String, Int32) |
Geeft aan of de reguliere expressie die is opgegeven in de Regex constructor een overeenkomst vindt in de opgegeven invoertekenreeks, beginnend bij de opgegeven beginpositie in de tekenreeks. |
| IsMatch(String, String) |
Geeft aan of de opgegeven reguliere expressie een overeenkomst vindt in de opgegeven invoertekenreeks. |
| IsMatch(String, String, RegexOptions) |
Geeft aan of de opgegeven reguliere expressie een overeenkomst vindt in de opgegeven invoertekenreeks, met behulp van de opgegeven overeenkomende opties. |
| IsMatch(String, String, RegexOptions, TimeSpan) |
Geeft aan of de opgegeven reguliere expressie een overeenkomst vindt in de opgegeven invoertekenreeks, met behulp van de opgegeven overeenkomende opties en time-outinterval. |
IsMatch(String)
Geeft aan of de reguliere expressie die is opgegeven in de Regex constructor een overeenkomst vindt in een opgegeven invoertekenreeks.
public:
bool IsMatch(System::String ^ input);
public bool IsMatch(string input);
member this.IsMatch : string -> bool
Public Function IsMatch (input As String) As Boolean
Parameters
- input
- String
De tekenreeks om naar een overeenkomst te zoeken.
Retouren
true als de reguliere expressie een overeenkomst vindt; anders, false.
Uitzonderingen
input is null.
Er is een time-out opgetreden. Zie de sectie Opmerkingen voor meer informatie over time-outs.
Voorbeelden
Het volgende voorbeeld illustreert het gebruik van de IsMatch(String) methode om te bepalen of een tekenreeks een geldig onderdeelnummer is. Bij de reguliere expressie wordt ervan uitgegaan dat het onderdeelnummer een specifieke notatie heeft die bestaat uit drie sets tekens, gescheiden door afbreekstreepjes. De eerste set, die vier tekens bevat, moet bestaan uit een alfanumerieke teken gevolgd door twee numerieke tekens gevolgd door een alfanumerieke teken. De tweede set, die uit drie tekens bestaat, moet numeriek zijn. De derde set, die uit vier tekens bestaat, moet drie numerieke tekens bevatten, gevolgd door een alfanumerieke teken.
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.
Het reguliere expressiepatroon is:
^[a-zA-Z0-9]\d{2}[a-zA-Z0-9](-\d{3}){2}[A-Za-z0-9]$
In de volgende tabel ziet u hoe het reguliere expressiepatroon wordt geïnterpreteerd.
| Patroon | Description |
|---|---|
^ |
Begin de overeenkomst aan het begin van de regel. |
[a-zA-Z0-9] |
Komt overeen met één alfabetisch teken (a door z of A door) Zof numeriek teken. |
\d{2} |
Komt overeen met twee numerieke tekens. |
[a-zA-Z0-9] |
Komt overeen met één alfabetisch teken (a door z of A door) Zof numeriek teken. |
- |
Koppel een afbreekstreepje. |
\d{3} |
Exact drie numerieke tekens. |
(-\d{3}){2} |
Zoek een afbreekstreepje gevolgd door drie numerieke tekens en zoek twee exemplaren van dit patroon. |
[a-zA-Z0-9] |
Komt overeen met één alfabetisch teken (a door z of A door) Zof numeriek teken. |
$ |
Beëindig de overeenkomst aan het einde van de regel. |
Opmerkingen
De IsMatch methode wordt meestal gebruikt om een tekenreeks te valideren of om ervoor te zorgen dat een tekenreeks voldoet aan een bepaald patroon zonder die tekenreeks op te halen voor latere manipulatie. Als u wilt bepalen of een of meer tekenreeksen overeenkomen met een normaal expressiepatroon en deze vervolgens ophaalt voor verdere manipulatie, roept u de Match of Matches methode aan.
De RegexMatchTimeoutException uitzondering wordt gegenereerd als de uitvoeringstijd van de overeenkomende bewerking de time-outinterval overschrijdt die is opgegeven door de Regex.Regex(String, RegexOptions, TimeSpan) constructor. Als u geen time-outinterval instelt wanneer u de constructor aanroept, wordt de uitzondering gegenereerd als de bewerking een time-outwaarde overschrijdt die is ingesteld voor het toepassingsdomein waarin het Regex-object wordt gemaakt. Als er geen time-out is gedefinieerd in de Regex constructor-aanroep of in de eigenschappen van het toepassingsdomein, of als de time-outwaarde is Regex.InfiniteMatchTimeout, wordt er geen uitzondering gegenereerd.
Zie ook
Van toepassing op
IsMatch(String, Int32)
Geeft aan of de reguliere expressie die is opgegeven in de Regex constructor een overeenkomst vindt in de opgegeven invoertekenreeks, beginnend bij de opgegeven beginpositie in de tekenreeks.
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
Parameters
- input
- String
De tekenreeks om naar een overeenkomst te zoeken.
- startat
- Int32
De positie van het teken waarop de zoekopdracht moet worden gestart.
Retouren
true als de reguliere expressie een overeenkomst vindt; anders, false.
Uitzonderingen
input is null.
startat is kleiner dan nul of groter dan de lengte van input.
Er is een time-out opgetreden. Zie de sectie Opmerkingen voor meer informatie over time-outs.
Voorbeelden
Het volgende voorbeeld illustreert het gebruik van de IsMatch(String, Int32) methode om te bepalen of een tekenreeks een geldig onderdeelnummer is. Er wordt gezocht naar een onderdeelnummer dat een dubbele punt volgt (:) teken in een tekenreeks. De IndexOf(Char) methode wordt gebruikt om de positie van het dubbele punt te bepalen, die vervolgens wordt doorgegeven aan de IsMatch(String, Int32) methode. Bij de reguliere expressie wordt ervan uitgegaan dat het onderdeelnummer een specifieke notatie heeft die bestaat uit drie sets tekens, gescheiden door afbreekstreepjes. De eerste set, die vier tekens bevat, moet bestaan uit een alfanumerieke teken gevolgd door twee numerieke tekens gevolgd door een alfanumerieke teken. De tweede set, die uit drie tekens bestaat, moet numeriek zijn. De derde set, die uit vier tekens bestaat, moet drie numerieke tekens bevatten, gevolgd door een alfanumerieke teken.
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.
Het reguliere expressiepatroon is:
[a-zA-Z0-9]\d{2}[a-zA-Z0-9](-\d{3}){2}[A-Za-z0-9]$
In de volgende tabel ziet u hoe het reguliere expressiepatroon wordt geïnterpreteerd.
| Patroon | Description |
|---|---|
[a-zA-Z0-9] |
Komt overeen met één alfabetisch teken (a door z of A door) Zof numeriek teken. |
\d{2} |
Komt overeen met twee numerieke tekens. |
[a-zA-Z0-9] |
Komt overeen met één alfabetisch teken (a door z of A door) Zof numeriek teken. |
- |
Koppel een afbreekstreepje. |
\d{3} |
Exact drie numerieke tekens. |
(-\d{3}){2} |
Zoek een afbreekstreepje gevolgd door drie numerieke tekens en zoek twee exemplaren van dit patroon. |
[a-zA-Z0-9] |
Komt overeen met één alfabetisch teken (a door z of A door) Zof numeriek teken. |
$ |
Beëindig de overeenkomst aan het einde van de regel. |
Opmerkingen
De IsMatch methode wordt meestal gebruikt om een tekenreeks te valideren of om ervoor te zorgen dat een tekenreeks voldoet aan een bepaald patroon zonder die tekenreeks op te halen voor latere manipulatie. Als u wilt bepalen of een of meer tekenreeksen overeenkomen met een normaal expressiepatroon en deze vervolgens ophaalt voor verdere manipulatie, roept u de Match of Matches methode aan.
startatZie de sectie Opmerkingen van Match(String, Int32).
De RegexMatchTimeoutException uitzondering wordt gegenereerd als de uitvoeringstijd van de overeenkomende bewerking de time-outinterval overschrijdt die is opgegeven door de Regex.Regex(String, RegexOptions, TimeSpan) constructor. Als u geen time-outinterval instelt wanneer u de constructor aanroept, wordt de uitzondering gegenereerd als de bewerking een time-outwaarde overschrijdt die is ingesteld voor het toepassingsdomein waarin het Regex-object wordt gemaakt. Als er geen time-out is gedefinieerd in de Regex constructor-aanroep of in de eigenschappen van het toepassingsdomein, of als de time-outwaarde is Regex.InfiniteMatchTimeout, wordt er geen uitzondering gegenereerd.
Zie ook
Van toepassing op
IsMatch(String, String)
Geeft aan of de opgegeven reguliere expressie een overeenkomst vindt in de opgegeven invoertekenreeks.
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
Parameters
- input
- String
De tekenreeks om naar een overeenkomst te zoeken.
- pattern
- String
Het reguliere expressiepatroon dat moet overeenkomen.
Retouren
true als de reguliere expressie een overeenkomst vindt; anders, false.
Uitzonderingen
Er is een reguliere expressieparseringsfout opgetreden.
input of pattern is null.
Er is een time-out opgetreden. Zie de sectie Opmerkingen voor meer informatie over time-outs.
Voorbeelden
Het volgende voorbeeld illustreert het gebruik van de IsMatch(String, String) methode om te bepalen of een tekenreeks een geldig onderdeelnummer is. Bij de reguliere expressie wordt ervan uitgegaan dat het onderdeelnummer een specifieke notatie heeft die bestaat uit drie sets tekens, gescheiden door afbreekstreepjes. De eerste set, die vier tekens bevat, moet bestaan uit een alfanumerieke teken gevolgd door twee numerieke tekens gevolgd door een alfanumerieke teken. De tweede set, die uit drie tekens bestaat, moet numeriek zijn. De derde set, die uit vier tekens bestaat, moet drie numerieke tekens bevatten, gevolgd door een alfanumerieke teken.
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.
Het reguliere expressiepatroon is:
^[a-zA-Z0-9]\d{2}[a-zA-Z0-9](-\d{3}){2}[A-Za-z0-9]$
In de volgende tabel ziet u hoe het reguliere expressiepatroon wordt geïnterpreteerd.
| Patroon | Description |
|---|---|
^ |
Begin de overeenkomst aan het begin van de regel. |
[a-zA-Z0-9] |
Komt overeen met één alfabetisch teken (a door z of A door) Zof numeriek teken. |
\d{2} |
Komt overeen met twee numerieke tekens. |
[a-zA-Z0-9] |
Komt overeen met één alfabetisch teken (a door z of A door) Zof numeriek teken. |
- |
Koppel een afbreekstreepje. |
\d{3} |
Exact drie numerieke tekens. |
(-\d{3}){2} |
Zoek een afbreekstreepje gevolgd door drie numerieke tekens en zoek twee exemplaren van dit patroon. |
[a-zA-Z0-9] |
Komt overeen met één alfabetisch teken (a door z of A door) Zof numeriek teken. |
$ |
Beëindig de overeenkomst aan het einde van de regel. |
Opmerkingen
De IsMatch methode wordt meestal gebruikt om een tekenreeks te valideren of om ervoor te zorgen dat een tekenreeks voldoet aan een bepaald patroon zonder die tekenreeks op te halen voor latere manipulatie. Als u wilt bepalen of een of meer tekenreeksen overeenkomen met een normaal expressiepatroon en deze vervolgens ophaalt voor verdere manipulatie, roept u de Match of Matches methode aan.
De statische IsMatch(String, String) methode is gelijk aan het maken van een Regex object met het reguliere expressiepatroon dat is opgegeven door pattern en het aanroepen van de IsMatch(String) instantiemethode. Dit reguliere expressiepatroon wordt opgeslagen in de cache voor snelle ophaaltijd door de engine voor reguliere expressies.
De pattern parameter bestaat uit reguliere expressietaalelementen die de tekenreeks symbolisch beschrijven die overeenkomen. Zie .NET Reguliere expressies en Regular Expression Language - Quick Reference voor meer informatie over reguliere expressies.
De RegexMatchTimeoutException uitzondering wordt gegenereerd als de uitvoeringstijd van de overeenkomende bewerking het time-outinterval overschrijdt dat is opgegeven voor het toepassingsdomein waarin de methode wordt aangeroepen. Als er geen time-out is gedefinieerd in de eigenschappen van het toepassingsdomein of als de time-outwaarde is Regex.InfiniteMatchTimeout, wordt er geen uitzondering gegenereerd.
Notities voor bellers
Deze methode treedt op na een interval dat gelijk is aan de standaardtime-outwaarde van het toepassingsdomein waarin de methode wordt aangeroepen. Als er geen time-outwaarde is gedefinieerd voor het toepassingsdomein, wordt de waarde InfiniteMatchTimeout, waardoor er geen time-out optreedt voor de methode, gebruikt. De aanbevolen statische methode voor het verifiëren van een patroonovereenkomst is IsMatch(String, String, RegexOptions, TimeSpan), waarmee u het time-outinterval kunt instellen.
Zie ook
Van toepassing op
IsMatch(String, String, RegexOptions)
Geeft aan of de opgegeven reguliere expressie een overeenkomst vindt in de opgegeven invoertekenreeks, met behulp van de opgegeven overeenkomende opties.
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
Parameters
- input
- String
De tekenreeks om naar een overeenkomst te zoeken.
- pattern
- String
Het reguliere expressiepatroon dat moet overeenkomen.
- options
- RegexOptions
Een bitsgewijze combinatie van de opsommingswaarden die opties bieden voor overeenkomende waarden.
Retouren
true als de reguliere expressie een overeenkomst vindt; anders, false.
Uitzonderingen
Er is een reguliere expressieparseringsfout opgetreden.
input of pattern is null.
options is geen geldige RegexOptions waarde.
Er is een time-out opgetreden. Zie de sectie Opmerkingen voor meer informatie over time-outs.
Voorbeelden
Het volgende voorbeeld illustreert het gebruik van de IsMatch(String, String) methode om te bepalen of een tekenreeks een geldig onderdeelnummer is. Bij de reguliere expressie wordt ervan uitgegaan dat het onderdeelnummer een specifieke notatie heeft die bestaat uit drie sets tekens, gescheiden door afbreekstreepjes. De eerste set, die vier tekens bevat, moet bestaan uit een alfanumerieke teken gevolgd door twee numerieke tekens gevolgd door een alfanumerieke teken. De tweede set, die uit drie tekens bestaat, moet numeriek zijn. De derde set, die uit vier tekens bestaat, moet drie numerieke tekens bevatten, gevolgd door een alfanumerieke teken.
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.
Het reguliere expressiepatroon is:
^[A-Z0-9]\d{2}[A-Z0-9](-\d{3}){2}[A-Z0-9]$
In de volgende tabel ziet u hoe het reguliere expressiepatroon wordt geïnterpreteerd.
| Patroon | Description |
|---|---|
^ |
Begin met het zoeken naar overeenkomsten aan het begin van de tekenreeks. |
[A-Z0-9] |
Komt overeen met één alfabetisch teken van A tot en met Zeen numeriek teken. |
\d{2} |
Komt overeen met twee numerieke tekens. |
[A-Z0-9] |
Komt overeen met één alfabetisch teken van A tot en met Zeen numeriek teken. |
- |
Koppel een afbreekstreepje. |
\d{3} |
Exact drie numerieke tekens. |
(-\d{3}){2} |
Zoek een afbreekstreepje gevolgd door drie numerieke tekens en zoek twee exemplaren van dit patroon. |
[A-Z0-9] |
Komt overeen met één alfabetisch teken van A tot en met Zeen numeriek teken. |
$ |
Eindig de match aan het einde van de tekenreeks. |
Het aanroepen van de IsMatch(String, String, RegexOptions) methode met de options parameterset RegexOptions.IgnoreCase is gelijk aan het definiëren van de volgende reguliere expressie:
[a-zA-Z0-9]\d{2}[a-zA-Z0-9](-\d{3}){2}[A-Za-z0-9]
Zie het voorbeeld voor de IsMatch(String, String) methode ter vergelijking.
Opmerkingen
De IsMatch methode wordt meestal gebruikt om een tekenreeks te valideren of om ervoor te zorgen dat een tekenreeks voldoet aan een bepaald patroon zonder die tekenreeks op te halen voor latere manipulatie. Als u wilt bepalen of een of meer tekenreeksen overeenkomen met een normaal expressiepatroon en deze vervolgens ophaalt voor verdere manipulatie, roept u de Match of Matches methode aan.
De statische IsMatch(String, String, RegexOptions) methode is gelijk aan het maken van een Regex object met het reguliere expressiepatroon dat is opgegeven door pattern en de reguliere expressieopties die zijn opgegeven door options en het aanroepen van de IsMatch(String) instantiemethode. Dit reguliere expressiepatroon wordt opgeslagen in de cache voor snelle ophaaltijd door de engine voor reguliere expressies.
De pattern parameter bestaat uit reguliere expressietaalelementen die de tekenreeks symbolisch beschrijven die overeenkomen. Zie .NET Reguliere expressies en Regular Expression Language - Quick Reference voor meer informatie over reguliere expressies.
De RegexMatchTimeoutException uitzondering wordt gegenereerd als de uitvoeringstijd van de overeenkomende bewerking het time-outinterval overschrijdt dat is opgegeven voor het toepassingsdomein waarin de methode wordt aangeroepen. Als er geen time-out is gedefinieerd in de eigenschappen van het toepassingsdomein of als de time-outwaarde is Regex.InfiniteMatchTimeout, wordt er geen uitzondering gegenereerd.
Notities voor bellers
Deze methode treedt op na een interval dat gelijk is aan de standaardtime-outwaarde van het toepassingsdomein waarin deze wordt aangeroepen. Als er geen time-outwaarde is gedefinieerd voor het toepassingsdomein, wordt de waarde InfiniteMatchTimeout, waardoor er geen time-out optreedt voor de methode, gebruikt. De aanbevolen statische methode voor het verifiëren van een patroonovereenkomst is IsMatch(String, String, RegexOptions, TimeSpan), waarmee u het time-outinterval kunt instellen.
Zie ook
Van toepassing op
IsMatch(String, String, RegexOptions, TimeSpan)
Geeft aan of de opgegeven reguliere expressie een overeenkomst vindt in de opgegeven invoertekenreeks, met behulp van de opgegeven overeenkomende opties en time-outinterval.
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
Parameters
- input
- String
De tekenreeks om naar een overeenkomst te zoeken.
- pattern
- String
Het reguliere expressiepatroon dat moet overeenkomen.
- options
- RegexOptions
Een bitsgewijze combinatie van de opsommingswaarden die opties bieden voor overeenkomende waarden.
- matchTimeout
- TimeSpan
Een time-outinterval of InfiniteMatchTimeout om aan te geven dat er geen time-out optreedt voor de methode.
Retouren
true als de reguliere expressie een overeenkomst vindt; anders, false.
Uitzonderingen
Er is een reguliere expressieparseringsfout opgetreden.
input of pattern is null.
options is geen geldige RegexOptions waarde.
– of –
matchTimeout is negatief, nul of groter dan ongeveer 24 dagen.
Er is een time-out opgetreden.
Voorbeelden
Het volgende voorbeeld illustreert het gebruik van de IsMatch(String, String, RegexOptions, TimeSpan) methode om te bepalen of een tekenreeks een geldig onderdeelnummer is. Bij de reguliere expressie wordt ervan uitgegaan dat het onderdeelnummer een specifieke notatie heeft die bestaat uit drie sets tekens, gescheiden door afbreekstreepjes. De eerste set, die vier tekens bevat, moet bestaan uit een alfanumerieke teken gevolgd door twee numerieke tekens gevolgd door een alfanumerieke teken. De tweede set, die uit drie tekens bestaat, moet numeriek zijn. De derde set, die uit vier tekens bestaat, moet drie numerieke tekens bevatten, gevolgd door een alfanumerieke teken. Bij het overeenkomen van het reguliere expressiepatroon moet minimaal worden gezocht in de invoertekenreeks, dus de methode stelt een time-outinterval van 500 milliseconden in.
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.
Het reguliere expressiepatroon is:
^[A-Z0-9]\d{2}[A-Z0-9](-\d{3}){2}[A-Z0-9]$
In de volgende tabel ziet u hoe het reguliere expressiepatroon wordt geïnterpreteerd.
| Patroon | Description |
|---|---|
^ |
Begin met het zoeken naar overeenkomsten aan het begin van de tekenreeks. |
[A-Z0-9] |
Komt overeen met één alfabetisch teken van A tot en met Zeen numeriek teken. |
\d{2} |
Komt overeen met twee numerieke tekens. |
[A-Z0-9] |
Komt overeen met één alfabetisch teken van A tot en met Zeen numeriek teken. |
- |
Koppel een afbreekstreepje. |
\d{3} |
Exact drie numerieke tekens. |
(-\d{3}){2} |
Zoek een afbreekstreepje gevolgd door drie numerieke tekens en zoek twee exemplaren van dit patroon. |
[A-Z0-9] |
Komt overeen met één alfabetisch teken van A tot en met Zeen numeriek teken. |
$ |
Eindig de match aan het einde van de tekenreeks. |
Het aanroepen van de IsMatch(String, String, RegexOptions, TimeSpan) methode met de options parameterset RegexOptions.IgnoreCase is gelijk aan het definiëren van de volgende reguliere expressie:
[a-zA-Z0-9]\d{2}[a-zA-Z0-9](-\d{3}){2}[A-Za-z0-9]
Zie het voorbeeld voor de IsMatch(String, String) methode ter vergelijking.
Opmerkingen
De IsMatch methode wordt meestal gebruikt om een tekenreeks te valideren of om ervoor te zorgen dat een tekenreeks voldoet aan een bepaald patroon zonder die tekenreeks op te halen voor latere manipulatie. Als u wilt bepalen of een of meer tekenreeksen overeenkomen met een normaal expressiepatroon en deze vervolgens ophaalt voor verdere manipulatie, roept u de Match of Matches methode aan.
De statische IsMatch(String, String, RegexOptions, TimeSpan) methode is gelijk aan het maken van een Regex object met het reguliere expressiepatroon dat is opgegeven door pattern en de reguliere expressieopties die zijn opgegeven door options en het aanroepen van de IsMatch(String) instantiemethode. Dit reguliere expressiepatroon wordt opgeslagen in de cache voor snelle ophaaltijd door de engine voor reguliere expressies.
De pattern parameter bestaat uit reguliere expressietaalelementen die de tekenreeks symbolisch beschrijven die overeenkomen. Zie .NET Reguliere expressies en Regular Expression Language - Quick Reference voor meer informatie over reguliere expressies.
De matchTimeout parameter geeft aan hoe lang een patroonkoppelingsmethode moet proberen een overeenkomst te vinden voordat er een time-out optreedt. Als u een time-outinterval instelt, voorkomt u dat reguliere expressies die afhankelijk zijn van overmatige backtracking niet meer reageren wanneer ze invoer verwerken die bijna overeenkomsten bevat. Zie Aanbevolen procedures voor reguliere expressies en backtracking voor meer informatie. Als er in dat tijdsinterval geen overeenkomst wordt gevonden, genereert de methode een RegexMatchTimeoutException uitzondering.
matchTimeout overschrijft een standaardtime-outwaarde die is gedefinieerd voor het toepassingsdomein waarin de methode wordt uitgevoerd.
Notities voor bellers
U wordt aangeraden de matchTimeout parameter in te stellen op een geschikte waarde, zoals twee seconden. Als u time-outs uitschakelt door op te InfiniteMatchTimeoutgeven, biedt de reguliere expressie-engine iets betere prestaties. Schakel echter alleen time-outs uit onder de volgende voorwaarden:
Wanneer de invoer die door een reguliere expressie wordt verwerkt, wordt afgeleid van een bekende en vertrouwde bron of bestaat uit statische tekst. Dit sluit tekst uit die dynamisch door gebruikers is ingevoerd.
Wanneer het reguliere expressiepatroon grondig is getest om ervoor te zorgen dat er efficiënt overeenkomsten, niet-overeenkomsten en bijna-overeenkomsten worden verwerkt.
Wanneer het reguliere expressiepatroon geen taalelementen bevat die bekend zijn dat ze overmatige backtracking veroorzaken bij het verwerken van een bijna-overeenkomst.