博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Regex..::.IsMatch 方法 (String, String, RegexOptions)

Posted on 2010-11-03 17:11  moss_tan_jun  阅读(1744)  评论(0编辑  收藏  举报
IsMatch 方法 (String, String, RegexOptions)
用于 Silverlight 的 .NET Framework 类库
Regex..::.IsMatch 方法 (String, String, RegexOptions)

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

命名空间:  System.Text.RegularExpressions
程序集:  System(在 System.dll 中)
Visual Basic(声明)
Public Shared Function IsMatch ( _
    input As String, _
    pattern As String, _
    options As RegexOptions _
) As Boolean
Visual Basic (用法)
Dim input As String
Dim pattern As String
Dim options As RegexOptions
Dim returnValue As Boolean

returnValue = Regex.IsMatch(input, _
    pattern, options)
C#
public static bool IsMatch(
    string input,
    string pattern,
    RegexOptions options
)

参数

input
类型:System..::.String
要搜索匹配项的字符串。
pattern
类型:System..::.String
要匹配的正则表达式模式。
options
类型:System.Text.RegularExpressions..::.RegexOptions
枚举值的按位组合。

返回值

类型:System..::.Boolean
如果正则表达式找到匹配项,则为 true;否则,为 false
异常 条件
ArgumentException

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

ArgumentNullException

inputnullNothingnullptrnull 引用(在 Visual Basic 中为 Nothing

- 或 -

patternnullNothingnullptrnull 引用(在 Visual Basic 中为 Nothing

ArgumentOutOfRangeException

options 不是有效的 RegexOptions 值。

IsMatch 方法通常用于验证字符串,或者在不检索字符串的情况下确保该字符串符合特定模式以进行后续操作。若要确定一个或多个字符串是否匹配某个正则表达式模式并检索这些字符串以进行后续操作,请调用 MatchMatches 方法。

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

pattern 参数由通过符号描述要匹配的字符串的各种正则表达式语言元素组成。有关正则表达式的更多信息,请参见 .NET Framework 文档中的 .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 参数设置为 RegexOptions..::.IgnoreCase 的情况下调用 IsMatch(String, String, RegexOptions) 方法等效于定义以下正则表达式:

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

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