在.net平台开发中,正则表达式是处理字符串相关逻辑的重要工具,能够高效完成复杂的模式匹配、内容提取、批量替换等任务,相比手动编写字符串遍历逻辑,正则表达式可以大幅减少代码量并提升可读性。

正则表达式基础概念
正则表达式是由普通字符和特殊元字符组成的字符串模式,用来描述字符串的匹配规则。在.net中,正则表达式相关的功能都封装在System.Text.RegularExpressions命名空间下,核心类是Regex。
常用的基础元字符包括:
.:匹配除换行符以外的任意单个字符d:匹配任意数字字符,等价于[0-9]w:匹配字母、数字、下划线*:匹配前面的元素零次或多次+:匹配前面的元素一次或多次^:匹配字符串的开头$:匹配字符串的结尾
Regex类的核心使用方式
1. 基础匹配判断
如果需要判断某个字符串是否符合指定的正则规则,可以使用Regex.IsMatch方法,该方法返回布尔值表示是否匹配成功。
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string phone = "13800138000";
// 匹配11位手机号的正则规则
string pattern = @"^1[3-9]d{9}$";
bool isMatch = Regex.IsMatch(phone, pattern);
Console.WriteLine($"手机号是否合法:{isMatch}");
}
}
2. 提取匹配内容
如果需要从字符串中提取符合规则的内容,可以使用Regex.Match或者Regex.Matches方法,前者返回第一个匹配结果,后者返回所有匹配结果的集合。
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string text = "我的邮箱是test@ipipp.com,备用邮箱是admin@ipipp.com";
// 匹配邮箱的正则规则
string pattern = @"w+@ipipp.com";
// 获取所有匹配的邮箱
MatchCollection matches = Regex.Matches(text, pattern);
Console.WriteLine("提取到的邮箱列表:");
foreach (Match match in matches)
{
Console.WriteLine(match.Value);
}
}
}
3. 字符串替换
如果需要将字符串中符合规则的内容替换为指定内容,可以使用Regex.Replace方法。
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string text = "我的手机号是13800138000,另一个手机号是13900139000";
// 匹配11位手机号的正则规则
string pattern = @"1[3-9]d{9}";
// 将手机号替换为脱敏格式
string result = Regex.Replace(text, pattern, "***********");
Console.WriteLine($"替换后的内容:{result}");
}
}
4. 分组提取指定内容
正则表达式中可以通过括号定义分组,提取匹配结果中特定部分的内容,分组索引从1开始,0表示整个匹配的字符串。
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string text = "姓名:张三,年龄:25;姓名:李四,年龄:30";
// 定义分组,第一个分组匹配姓名,第二个分组匹配年龄
string pattern = @"姓名:(w+),年龄:(d+)";
MatchCollection matches = Regex.Matches(text, pattern);
foreach (Match match in matches)
{
string name = match.Groups[1].Value;
string age = match.Groups[2].Value;
Console.WriteLine($"姓名:{name},年龄:{age}");
}
}
}
RegexOptions枚举的使用
在使用Regex类的方法时,可以传入RegexOptions枚举来指定匹配的行为,常用的选项包括:
RegexOptions.IgnoreCase:忽略大小写匹配RegexOptions.Multiline:多行模式,让^和$匹配每一行的开头和结尾RegexOptions.Singleline:单行模式,让.匹配包括换行符在内的所有字符RegexOptions.Compiled:将正则表达式编译为程序集,提升重复使用的性能
示例如下:
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string text = "Hello World";
string pattern = @"hello world";
// 忽略大小写匹配
bool isMatch = Regex.IsMatch(text, pattern, RegexOptions.IgnoreCase);
Console.WriteLine($"忽略大小写匹配结果:{isMatch}");
}
}
性能优化建议
如果同一个正则表达式需要被多次使用,建议将Regex实例缓存起来,或者设置RegexOptions.Compiled选项,避免重复编译正则表达式带来的性能损耗。对于简单的字符串匹配场景,如果不需要复杂的规则,优先使用字符串自带的Contains、StartsWith等方法,性能会优于正则表达式。
RegexMatchMatchCollection正则表达式修改时间:2026-06-13 16:09:20