Regex..::.IsMatch 方法 (String, String, RegexOptions)
Posted on 2010-11-03 17:11 moss_tan_jun 阅读(1766) 评论(0) 编辑 收藏 举报指示正则表达式使用 pattern 参数中指定的正则表达式和 options 参数中提供的匹配选项是否在输入字符串中找到匹配项。
程序集: System(在 System.dll 中)
Public Shared Function IsMatch ( _ input As String, _ pattern As String, _ options As RegexOptions _ ) As Boolean
Dim input As String Dim pattern As String Dim options As RegexOptions Dim returnValue As Boolean returnValue = Regex.IsMatch(input, _ pattern, options)
public static bool IsMatch( string input, string pattern, RegexOptions options )
参数
- input
- 类型:System..::.String
要搜索匹配项的字符串。
- pattern
- 类型:System..::.String
要匹配的正则表达式模式。
- options
- 类型:System.Text.RegularExpressions..::.RegexOptions
枚举值的按位组合。
异常 | 条件 |
---|---|
ArgumentException |
出现正则表达式分析错误。 |
ArgumentNullException |
input 为 nullNothingnullptrnull 引用(在 Visual Basic 中为 Nothing)。 - 或 - pattern 为 nullNothingnullptrnull 引用(在 Visual Basic 中为 Nothing)。 |
ArgumentOutOfRangeException |
options 不是有效的 RegexOptions 值。 |
IsMatch 方法通常用于验证字符串,或者在不检索字符串的情况下确保该字符串符合特定模式以进行后续操作。若要确定一个或多个字符串是否匹配某个正则表达式模式并检索这些字符串以进行后续操作,请调用 Match 或 Matches 方法。
静态 IsMatch(String, String, RegexOptions) 方法等效于使用 pattern 指定的正则表达式模式和 options 指定的正则表达式选项构造 Regex 对象并调用 IsMatch(String) 实例方法。此正则表达式模式将被缓存以供正则表达式引擎快速检索。
pattern 参数由通过符号描述要匹配的字符串的各种正则表达式语言元素组成。有关正则表达式的更多信息,请参见 .NET Framework 文档中的 .NET Framework 正则表达式以及正则表达式语言元素主题。
以下示例阐释如何使用 IsMatch(String, String) 方法来确定一个字符串是否为有效的部件号。此正则表达式假定该部件号具有特定的格式(由以连字符分隔的三组字符组成)。第一组包含四个字符,并且必须由一个字母数字字符后跟两个数字字符再后跟一个字母数字字符组成。第二组由三个字符组成,并且必须为数字。第三组由四个字符组成,并且必须为三个数字字符后跟一个字母数字字符。
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] |
匹配任何单个字母字符(A 到 Z)或任何数字字符。 |
\d{2} |
匹配两个数字字符。 |
[A-Z0-9] |
匹配任何单个字母字符(A 到 Z)或任何数字字符。 |
- |
匹配连字符。 |
\d{3} |
匹配正好三个数字字符。 |
(-\d{3}){2} |
查找一个连字符后跟三个数字字符的模式,并匹配此模式的两个匹配项。 |
[A-Z0-9] |
匹配任何单个字母字符(A 到 Z)或任何数字字符。 |
$ |
在字符串的结尾结束匹配。 |
在将 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) 方法的示例。