C# 正则表达式详解 正则表达式Regular Expression简称Regex是一种用于匹配、查找、替换字符串的规则。在 C# 中正则表达式由System.Text.RegularExpressions命名空间提供。掌握 Regex 后可以轻松完成✔ 验证手机号✔ 验证邮箱✔ 提取数字✔ 查找指定字符串✔ 批量替换文本✔ 分割字符串✔ 解析日志✔ 数据清洗一、命名空间using System.Text.RegularExpressions;二、Regex 类最常用的是Regex类。常见方法方法作用IsMatch()是否匹配Match()获取第一个匹配Matches()获取所有匹配Replace()替换字符串Split()分割字符串Escape()转义特殊字符Unescape()取消转义三、最简单的例子判断字符串中是否包含数字。using System; using System.Text.RegularExpressions; class Program { static void Main() { string str abc123; bool result Regex.IsMatch(str, \d); Console.WriteLine(result); } }输出True因为\d表示数字。四、Regex.IsMatch()用于判断是否符合规则。语法Regex.IsMatch(字符串, 正则表达式)例如string phone 13812345678; bool result Regex.IsMatch(phone, ^1\d{10}$); Console.WriteLine(result);输出True解释^ 开始 1 第一位必须是1 \d 数字 {10} 后面10位 $ 结束五、Regex.Match()返回第一个匹配结果。例如string str abc123xyz456; Match match Regex.Match(str, \d); Console.WriteLine(match.Value);输出123说明\d表示一个或多个数字。Match 常用属性match.Value匹配内容match.Index开始位置match.Length长度例如Console.WriteLine(match.Value); Console.WriteLine(match.Index); Console.WriteLine(match.Length);输出123 3 3六、Regex.Matches()获取所有匹配。例如string str abc123xyz456aaa789; MatchCollection mc Regex.Matches(str, \d); foreach (Match item in mc) { Console.WriteLine(item.Value); }输出123 456 789七、Regex.Replace()替换。例如把所有数字替换成 *string str abc123xyz456; string result Regex.Replace(str, \d, *); Console.WriteLine(result);输出abc***xyz***替换整个数字string result Regex.Replace(str, \d, ***);输出abc***xyz***八、Regex.Split()按规则切割。例如string str 张三,李四;王五|赵六; string[] arr Regex.Split(str, [,;|]); foreach (string s in arr) { Console.WriteLine(s); }输出张三 李四 王五 赵六九、常用元字符1、匹配任意字符除换行。Regex.IsMatch(abc, a.c)结果True2、\d数字0~9例如1233、\D非数字abc4、\w字母数字下划线即A-Z a-z 0-9 _5、\W非单词字符。6、\s空白字符。包括空格 Tab 换行7、\S非空白。8、^开始例如^abc必须以 abc 开头。9、$结束abc$必须以 abc 结尾。10、[]字符集合。例如[abc]匹配a b c例如Regex.IsMatch(apple, [abc])结果True11、[^]取反[^0-9]不是数字。12、|或者cat|dog匹配cat dog十、数量词*0 次或多次ab*可以匹配a ab abb abbb1 次或多次ab匹配ab abb?0 次或1次colou?r匹配color colour{n}指定次数\d{6}6 位数字。{m,n}范围\d{6,10}6~10 位数字。{m,}至少 m 次a{3,}至少三个 a。十一、分组 ()例如string str 2026-07-10; Match m Regex.Match(str, (\d{4})-(\d{2})-(\d{2})); Console.WriteLine(m.Groups[1].Value); Console.WriteLine(m.Groups[2].Value); Console.WriteLine(m.Groups[3].Value);输出2026 07 10Groups0 整个匹配 1 第一组 2 第二组十二、常见验证手机号^1\d{10}$邮箱^[\w.-][\w.-]\.[A-Za-z]{2,}$身份证18位基础格式^\d{17}[\dXx]$该表达式只校验基本格式不校验行政区划、出生日期或校验码。QQ^[1-9]\d{4,10}$用户名6~20 位字母数字下划线^\w{6,20}$密码8~20 位必须包含大小写字母和数字^(?.*[a-z])(?.*[A-Z])(?.*\d).{8,20}$十三、RegexOptions匹配选项Regex.IsMatch( ABC, abc, RegexOptions.IgnoreCase);常见选项选项说明IgnoreCase忽略大小写Multiline多行模式^、$匹配每行Singleline单行模式.可匹配换行Compiled编译正则提高重复使用性能首次创建开销略高CultureInvariant与区域性无关的匹配十四、逐字字符串建议写正则时使用\d而不是\\d这样无需对反斜杠进行二次转义可读性更高。十五、实战案例1. 提取所有邮箱string text tomtest.com jackqq.com abc163.com; MatchCollection mc Regex.Matches( text, [\w.-][\w.-]\.[A-Za-z]{2,}); foreach (Match m in mc) { Console.WriteLine(m.Value); }输出tomtest.com jackqq.com abc163.com2. 隐藏手机号中间四位string phone 13812345678; string result Regex.Replace( phone, (\d{3})\d{4}(\d{4}), $1****$2); Console.WriteLine(result);输出138****56783. 删除所有 HTML 标签string html pHello bWorld/b/p; string text Regex.Replace(html, .*?, ); Console.WriteLine(text);输出Hello World注意对于复杂 HTML不建议使用正则解析应使用专门的 HTML 解析库如 Html Agility Pack。十六、学习建议建议按以下顺序掌握正则表达式基础语法字符、字符集、数量词、锚点^、$。Regex 常用方法IsMatch()、Match()、Matches()、Replace()、Split()。进阶特性分组、命名分组、反向引用、零宽断言前瞻/后顾、贪婪与懒惰匹配。性能优化预编译Regex、避免灾难性回溯、设置超时时间适用于处理不可信输入。总结方法用途返回值Regex.IsMatch()判断是否匹配boolRegex.Match()获取第一个匹配MatchRegex.Matches()获取全部匹配MatchCollectionRegex.Replace()替换内容stringRegex.Split()按规则分割string[]Regex.Escape()转义特殊字符stringRegex.Unescape()取消转义string熟练掌握正则表达式后在 C# 中处理文本、日志、配置文件、表单验证、数据清洗和批量替换等场景都会更加高效

相关新闻

最新新闻

告别告警疲劳,用 SOAR 剧本自动处置凌晨突发挖矿事件

告别告警疲劳,用 SOAR 剧本自动处置凌晨突发挖矿事件

凌晨三点的 CPU 告警:从“救火”到“剧本编排”的范式转移 2026 年的一个凌晨,Zabbix 监控大屏突然弹出一条红色告警:核心业务服务器 prod-db-04 的 CPU 使用率瞬间飙升至 99%,且伴随异常的外联流量。若是放在几年前,这…

2026/7/13 17:20:55
3分钟掌握跨平台资源下载神器:免费无水印视频音频一键获取

3分钟掌握跨平台资源下载神器:免费无水印视频音频一键获取

3分钟掌握跨平台资源下载神器:免费无水印视频音频一键获取 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 你是否…

2026/7/13 17:20:55
合同风险识别新范式(ChatGPT+法律知识图谱双引擎驱动):覆盖92.6%格式条款漏洞,仅需3秒生成合规批注

合同风险识别新范式(ChatGPT+法律知识图谱双引擎驱动):覆盖92.6%格式条款漏洞,仅需3秒生成合规批注

更多请点击: https://intelliparadigm.com 第一章:合同风险识别新范式(ChatGPT法律知识图谱双引擎驱动):覆盖92.6%格式条款漏洞,仅需3秒生成合规批注 双引擎协同架构设计 传统合同审查依赖人工经验与规则…

2026/7/13 17:20:55
ChatGPT 新功能实测:DALL·E 3 图片编辑,从“生成”到“精修”的进化

ChatGPT 新功能实测:DALL·E 3 图片编辑,从“生成”到“精修”的进化

1. DALLE 3 图片编辑功能初体验第一次用 DALLE 3 的图片编辑功能时,我随手画了只卡通小羊。生成后发现羊的眼睛位置有点奇怪,原本以为要重新生成整张图,没想到点开编辑模式后,只需要用画笔圈出眼睛部位,输入"make…

2026/7/13 17:20:55
3步搞定黑苹果EFI配置:OpCore-Simplify的智能革命

3步搞定黑苹果EFI配置:OpCore-Simplify的智能革命

3步搞定黑苹果EFI配置:OpCore-Simplify的智能革命 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 你是否曾经为配置黑苹果而彻夜难眠&…

2026/7/13 17:20:55
还在让AI工具吃灰?是时候让它真正为你“炫”出价值了

还在让AI工具吃灰?是时候让它真正为你“炫”出价值了

各位开发者朋友,不知道你们有没有一种感觉:我们似乎正处在一个AI工具大爆炸,但真实生产力提升却略显“骨感”的时代。每天都有新的代码生成工具诞生,我们热情地注册、尝鲜,但大多数时候,它们只是静静地躺在…

2026/7/13 17:15:55

月新闻