IsMatch 方法 (String, String, RegexOptions)
用于 Silverlight 的 .NET Framework 类库
Regex..::.IsMatch 方法 (String, String, RegexOptions)

指示正则表达式使用 pattern 参数中指定的正则表达式和 options 参数中提供的匹配选项是否在输入字符串中找到匹配项。

命名空间:  System.Text.RegularExpressions
程序集:  System(在 System.dll 中)
异常 条件
ArgumentException

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

ArgumentNullException

inputnullNothingnullptrnull 引用(在 Visual Basic 中为 Nothing

- 或 -

patternnullNothingnullptrnull 引用(在 Visual Basic 中为 Nothing

ArgumentOutOfRangeException

options 不是有效的 RegexOptions 值。

Matches 方法。

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

pattern 参数由通过符号描述要匹配的字符串的各种正则表达式语言元素组成。有关正则表达式的更多信息,请参见 .NET Framework 文档中的 正则表达式语言元素主题。

以下示例阐释如何使用 IsMatch(String, String) 方法来确定一个字符串是否为有效的部件号。此正则表达式假定该部件号具有特定的格式(由以连字符分隔的三组字符组成)。第一组包含四个字符,并且必须由一个字母数字字符后跟两个数字字符再后跟一个字母数字字符组成。第二组由三个字符组成,并且必须为数字。第三组由四个字符组成,并且必须为三个数字字符后跟一个字母数字字符。

Visual Basic
Imports System.Text.RegularExpressions

Module Example
   Public Sub Demo(ByVal outputBlock As System.Windows.Controls.TextBlock)
      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
         outputBlock.Text += String.Format("{0} {1} a valid part number.", _
                           partNumber, _
                           IIf(Regex.IsMatch(partNumber, pattern, RegexOptions.IgnoreCase), _
                               "is", "is not")) & vbCrLf
      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.
using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      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)
         outputBlock.Text += String.Format("{0} {1} a valid part number.",
                           partNumber,
                           Regex.IsMatch(partNumber, pattern, RegexOptions.IgnoreCase)
                                         ? "is" : "is not") + "\n";
   }
}
// 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)或任何数字字符。

$

在字符串的结尾结束匹配。

在将 options 参数设置为 IsMatch(String, String, RegexOptions) 方法等效于定义以下正则表达式:

[a-zA-Z0-9]\d{2}[a-zA-Z0-9](-\d{3}){2}[A-Za-z0-9]

为了进行比较,请参见 IsMatch(String, String) 方法的示例。

相关文章: