Regex.IsMatch 方法

定义

指示正则表达式在输入字符串中是否找到匹配项。

重载

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)

Source:
Regex.Match.cs
Source:
Regex.Match.cs
Source:
Regex.Match.cs

指示所指定的正则表达式是否使用指定的匹配选项和超时间隔在指定的输入字符串中找到了匹配项。

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

例外

出现正则表达式分析错误。

inputpatternnull

options 不是有效的 RegexOptions 值。

- 或 -

matchTimeout 为负、零或大于 24 天左右。

发生超时。

示例

下面的示例演示如何使用 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] 匹配 从 到 AZ的任何单个字母字符或任何数字字符。
\d{2} 匹配两个数字字符。
[A-Z0-9] 匹配 从 到 AZ的任何单个字母字符或任何数字字符。
- 匹配连字符。
\d{3} 完全匹配三个数字字符。
(-\d{3}){2} 查找后跟三个数字字符的连字符,并匹配此模式的两个匹配项。
[A-Z0-9] 匹配 从 到 AZ的任何单个字母字符或任何数字字符。
$ 在字符串的结尾结束匹配。

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方法通常用于验证字符串或确保字符串符合特定模式,而无需检索该字符串进行后续操作。 如果要确定一个或多个字符串是否与正则表达式模式匹配,然后检索它们以供后续操作,请调用 MatchMatches 方法。

静态IsMatch(String, String, RegexOptions, TimeSpan)方法等效于使用 指定的正则表达式模式和 由 options 指定的pattern正则表达式选项构造 Regex 对象,并调用 IsMatch(String) 实例方法。 此正则表达式模式是缓存的,以便正则表达式引擎快速检索。

参数 pattern 由正则表达式语言元素组成,这些元素以符号方式描述要匹配的字符串。 有关正则表达式的详细信息,请参阅 .NET 正则表达式正则表达式语言 - 快速参考

参数 matchTimeout 指定模式匹配方法在超时之前应尝试查找匹配项的时间。设置超时间隔可防止依赖过度回溯的正则表达式在处理包含接近匹配项的输入时出现停止响应。 有关详细信息,请参阅 正则表达式的最佳做法回溯。 如果在该时间间隔内找不到匹配项,该方法将 RegexMatchTimeoutException 引发异常。 matchTimeout 替代为执行方法的应用程序域定义的任何默认超时值。

调用方说明

建议将 参数设置为 matchTimeout 适当的值,例如 2 秒。 如果通过指定 InfiniteMatchTimeout来禁用超时,则正则表达式引擎提供的性能稍好一些。 但是,应仅在以下情况下禁用超时:

  • 当正则表达式处理的输入派生自已知且受信任的源或由静态文本组成时。 这不包括用户动态输入的文本。

  • 当正则表达式模式经过全面测试以确保它有效地处理匹配项、非匹配项和接近匹配项时。

  • 当正则表达式模式不包含已知在处理接近匹配时导致过度回溯的语言元素时。

另请参阅

适用于

IsMatch(ReadOnlySpan<Char>, String, RegexOptions, TimeSpan)

Source:
Regex.Match.cs
Source:
Regex.Match.cs
Source:
Regex.Match.cs

指示指定的正则表达式是否使用指定的匹配选项和超时间隔在指定的输入范围中查找匹配项。

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

例外

出现正则表达式分析错误。

patternnull

发生超时。

options 不在有效 RegexOptions 值中,或者 matchTimeout 为负、零或大于大约 24 天。

适用于

IsMatch(String, String, RegexOptions)

Source:
Regex.Match.cs
Source:
Regex.Match.cs
Source:
Regex.Match.cs

指示所指定的正则表达式是否使用指定的匹配选项在指定的输入字符串中找到了匹配项。

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

例外

出现正则表达式分析错误。

inputpatternnull

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] 匹配 从 到 AZ的任何单个字母字符或任何数字字符。
\d{2} 匹配两个数字字符。
[A-Z0-9] 匹配 从 到 AZ的任何单个字母字符或任何数字字符。
- 匹配连字符。
\d{3} 完全匹配三个数字字符。
(-\d{3}){2} 查找后跟三个数字字符的连字符,并匹配此模式的两个匹配项。
[A-Z0-9] 匹配 从 到 AZ的任何单个字母字符或任何数字字符。
$ 在字符串的结尾结束匹配。

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方法通常用于验证字符串或确保字符串符合特定模式,而无需检索该字符串进行后续操作。 如果要确定一个或多个字符串是否与正则表达式模式匹配,然后检索它们以供后续操作,请调用 MatchMatches 方法。

静态IsMatch(String, String, RegexOptions)方法等效于使用 指定的正则表达式模式和 由 options 指定的pattern正则表达式选项构造 Regex 对象,并调用 IsMatch(String) 实例方法。 此正则表达式模式是缓存的,以便正则表达式引擎快速检索。

参数 pattern 由正则表达式语言元素组成,这些元素以符号方式描述要匹配的字符串。 有关正则表达式的详细信息,请参阅 .NET 正则表达式正则表达式语言 - 快速参考

RegexMatchTimeoutException如果匹配操作的执行时间超过为调用方法的应用程序域指定的超时间隔,则会引发异常。 如果未在应用程序域的属性中定义超时,或者超时值为 Regex.InfiniteMatchTimeout,则不会引发异常。

调用方说明

此方法在一个间隔后超时,该间隔等于调用它的应用程序域的默认超时值。 如果尚未为应用程序域定义超时值,则使用值 InfiniteMatchTimeout(用于防止方法超时)。 用于验证模式匹配 IsMatch(String, String, RegexOptions, TimeSpan)的推荐静态方法是 ,可用于设置超时间隔。

另请参阅

适用于

IsMatch(ReadOnlySpan<Char>, String, RegexOptions)

Source:
Regex.Match.cs
Source:
Regex.Match.cs
Source:
Regex.Match.cs

指示指定的正则表达式是否使用指定的匹配选项在指定的输入范围中查找匹配项。

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

例外

出现正则表达式分析错误。

patternnull

发生超时。

options 不在有效 RegexOptions 值中。

适用于

IsMatch(String, String)

Source:
Regex.Match.cs
Source:
Regex.Match.cs
Source:
Regex.Match.cs

指示所指定的正则表达式在指定的输入字符串中是否找到了匹配项。

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

例外

出现正则表达式分析错误。

inputpatternnull

发生超时。 有关超时的详细信息,请参阅“备注”部分。

示例

下面的示例演示如何使用 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] 通过 或 azAZ) 或数字字符匹配单个字母字符 (。
\d{2} 匹配两个数字字符。
[a-zA-Z0-9] 通过 或 azAZ) 或数字字符匹配单个字母字符 (。
- 匹配连字符。
\d{3} 完全匹配三个数字字符。
(-\d{3}){2} 查找后跟三个数字字符的连字符,并匹配此模式的两个匹配项。
[a-zA-Z0-9] 通过 或 azAZ) 或数字字符匹配单个字母字符 (。
$ 在行尾结束匹配。

注解

IsMatch方法通常用于验证字符串或确保字符串符合特定模式,而无需检索该字符串进行后续操作。 如果要确定一个或多个字符串是否与正则表达式模式匹配,然后检索它们以供后续操作,请调用 MatchMatches 方法。

静态IsMatch(String, String)方法等效于使用 指定的pattern正则表达式模式构造 Regex 对象,并调用 IsMatch(String) 实例方法。 此正则表达式模式是缓存的,以便正则表达式引擎快速检索。

参数 pattern 由正则表达式语言元素组成,这些元素以符号方式描述要匹配的字符串。 有关正则表达式的详细信息,请参阅 .NET 正则表达式正则表达式语言 - 快速参考

RegexMatchTimeoutException如果匹配操作的执行时间超过为调用方法的应用程序域指定的超时间隔,则会引发异常。 如果未在应用程序域的属性中定义超时,或者超时值为 Regex.InfiniteMatchTimeout,则不会引发异常。

调用方说明

此方法在间隔后超时,该间隔等于调用方法的应用程序域的默认超时值。 如果尚未为应用程序域定义超时值,则使用值 InfiniteMatchTimeout(用于防止方法超时)。 用于验证模式匹配 IsMatch(String, String, RegexOptions, TimeSpan)的推荐静态方法是 ,可用于设置超时间隔。

另请参阅

适用于

IsMatch(ReadOnlySpan<Char>, String)

Source:
Regex.Match.cs
Source:
Regex.Match.cs
Source:
Regex.Match.cs

指示指定的正则表达式是否在指定的输入范围中查找匹配项。

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

例外

出现正则表达式分析错误。

patternnull

发生超时。

适用于

IsMatch(ReadOnlySpan<Char>, Int32)

Source:
Regex.Match.cs
Source:
Regex.Match.cs
Source:
Regex.Match.cs

指示 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)

Source:
Regex.Match.cs
Source:
Regex.Match.cs
Source:
Regex.Match.cs

指示 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

例外

inputnull

发生超时。 有关超时的详细信息,请参阅“备注”部分。

示例

下面的示例演示如何使用 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] 通过 或 azAZ) 或数字字符匹配单个字母字符 (。
\d{2} 匹配两个数字字符。
[a-zA-Z0-9] 通过 或 azAZ) 或数字字符匹配单个字母字符 (。
- 匹配连字符。
\d{3} 完全匹配三个数字字符。
(-\d{3}){2} 查找后跟三个数字字符的连字符,并匹配此模式的两个匹配项。
[a-zA-Z0-9] 通过 或 azAZ) 或数字字符匹配单个字母字符 (。
$ 在行尾结束匹配。

注解

IsMatch方法通常用于验证字符串或确保字符串符合特定模式,而无需检索该字符串进行后续操作。 如果要确定一个或多个字符串是否与正则表达式模式匹配,然后检索它们以供后续操作,请调用 MatchMatches 方法。

RegexMatchTimeoutException如果匹配操作的执行时间超过构造函数指定的Regex.Regex(String, RegexOptions, TimeSpan)超时间隔,则会引发异常。 如果在调用构造函数时未设置超时间隔,则当操作超过为创建对象的应用程序域 Regex 建立的任何超时值时,将引发异常。 如果在构造函数调用或应用程序域的属性中 Regex 未定义超时,或者超时值为 Regex.InfiniteMatchTimeout,则不会引发异常。

另请参阅

适用于

IsMatch(ReadOnlySpan<Char>)

Source:
Regex.Match.cs
Source:
Regex.Match.cs
Source:
Regex.Match.cs

指示 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)

Source:
Regex.Match.cs
Source:
Regex.Match.cs
Source:
Regex.Match.cs

指示 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

例外

inputnull

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] 通过 或 azAZ) 或数字字符匹配单个字母字符 (。
\d{2} 匹配两个数字字符。
[a-zA-Z0-9] 通过 或 azAZ) 或数字字符匹配单个字母字符 (。
- 匹配连字符。
\d{3} 完全匹配三个数字字符。
(-\d{3}){2} 查找后跟三个数字字符的连字符,并匹配此模式的两个匹配项。
[a-zA-Z0-9] 通过 或 azAZ) 或数字字符匹配单个字母字符 (。
$ 在行尾结束匹配。

注解

IsMatch方法通常用于验证字符串或确保字符串符合特定模式,而无需检索该字符串进行后续操作。 如果要确定一个或多个字符串是否与正则表达式模式匹配,然后检索它们以供后续操作,请调用 MatchMatches 方法。

有关 的 startat更多详细信息,请参阅 的 Match(String, Int32)“备注”部分。

RegexMatchTimeoutException如果匹配操作的执行时间超过构造函数指定的Regex.Regex(String, RegexOptions, TimeSpan)超时间隔,则会引发异常。 如果在调用构造函数时未设置超时间隔,则当操作超过为创建对象的应用程序域 Regex 建立的任何超时值时,将引发异常。 如果在构造函数调用或应用程序域的属性中 Regex 未定义超时,或者超时值为 Regex.InfiniteMatchTimeout,则不会引发异常。

另请参阅

适用于