Regex.IsMatch
是 .NET Framework 中 System.Text.RegularExpressions
命名空间下的一个静态方法,用于确定正则表达式模式是否在指定的输入字符串中找到匹配项。此方法非常适合用来快速检查字符串是否符合特定的格式或包含某些特征。
语法
Csharp
深色版本
public static bool IsMatch(string input, string pattern)
public static bool IsMatch(string input, string pattern, RegexOptions options)
- input:要搜索匹配项的字符串。
- pattern:要匹配的正则表达式模式。
- options(可选):一个
RegexOptions
枚举值的组合,用于设置匹配选项(如忽略大小写、多行模式等)。如果不提供,则使用默认选项。
返回值
返回一个布尔值:
- 如果找到了与指定模式相匹配的子字符串,则为
true
; - 否则为
false
。
示例
简单匹配
Csharp
深色版本
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string input = "Hello, world!";
string pattern = "world";
if (Regex.IsMatch(input, pattern))
{
Console.WriteLine("Pattern found.");
}
else
{
Console.WriteLine("Pattern not found.");
}
}
}
使用 RegexOptions
Csharp
深色版本
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string input = "Hello, World!";
string pattern = "hello";
// 忽略大小写的匹配
if (Regex.IsMatch(input, pattern, RegexOptions.IgnoreCase))
{
Console.WriteLine("Pattern found with ignore case option.");
}
else
{
Console.WriteLine("Pattern not found.");
}
}
}
复杂模式匹配
Csharp
深色版本
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string input = "Contact us at [email protected] or [email protected].";
string emailPattern = @"\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z]{2,}\b";
if (Regex.IsMatch(input, emailPattern))
{
Console.WriteLine("Email address found in the text.");
}
else
{
Console.WriteLine("No email address found.");
}
}
}
注意事项
-
性能:如果需要多次使用相同的正则表达式进行匹配,考虑使用
CsharpRegex
类的构造函数创建Regex
对象,并调用其IsMatch
方法。这可以避免每次匹配时都重新编译正则表达式,提高性能。深色版本
Regex regex = new Regex(emailPattern); if (regex.IsMatch(input)) { Console.WriteLine("Email address found in the text."); }
-
异常处理:虽然
Regex.IsMatch
不会抛出异常(除非传入无效的正则表达式),但为了代码健壮性,建议捕获并处理可能的异常情况。 -
线程安全:静态方法
Regex.IsMatch
是线程安全的,但如果你创建了Regex
实例并在线程之间共享它,确保它是不可变的(即没有修改它的实例成员)。