C# 常用正则表达式实用合集
在 C# 开发中,正则表达式是处理字符串验证、数据提取和文本清洗的核心工具。本文精选了日常开发中最高频使用的正则模式,包括中英文混合处理、常见格式校验(如身份证、邮编、IP)及数值范围匹配,并提供相应的使用建议,助您快速构建健壮的文本处理逻辑。
结果或目标
通过掌握以下正则表达式,您可以快速解决常见的文本校验需求,例如判断用户输入的账号是否合法、提取日志中的 IP 地址、过滤无效的空行或清理 HTML 标签。这些表达式可直接嵌入 C# 的 Regex 类中使用。
准备条件
- 确保项目已引入命名空间:
using System.Text.RegularExpressions; - 熟悉基础的正则语法结构,如量词
{n}、锚点^/$和字符类[...]。
真实操作顺序:常用正则表达式详解
第1步:通用字符与空白处理
在处理多语言文本或清理用户输入时,经常需要识别非 ASCII 字符或控制空白符。
- 匹配中文字符:
[\u4e00-\u9fa5]
评注:这是匹配单个汉字的经典写法,常用于统计中文内容或进行分词预处理。 - 匹配双字节字符(含汉字):
[^\x00-\xff]
评注:可用于计算字符串长度,因为一个双字节字符通常计为 2,而 ASCII 字符计为 1。 - 匹配空白行:
\n\s*\r
评注:配合Regex.Replace可有效删除文档中的多余空行。 - 匹配首尾空白字符:
^\s*|\s*$
评注:用于去除字符串开头和结尾的空格、制表符或换页符,非常实用的清洗手段。
第2步:日期与时间信息提取
从非结构化文本中提取标准日期格式。
- 获取日期正则表达式:
\d{4}[年|\-|\.]\d{1,12}[月|\-|\.]\d{1,31}日?
评注:可匹配大多数“YYYY-MM-DD”、“YYYY.MM.DD”或包含中文“年月日”的格式。注意此表达式较宽松,具体应用时需结合业务逻辑进一步限制月份和日期范围的合法性。
第3步:网络标识与联系方式验证
针对电商、社交或后台管理系统中常见的用户输入字段进行校验。
- 匹配 Email 地址:
\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
评注:适用于绝大多数标准邮箱格式的表单验证。 - 匹配网址 URL:
[a-zA-z]+://[^\s]*
评注:能基本满足提取 HTTP/HTTPS 链接的需求,但对于复杂查询参数或协议变体可能需要更细致的调整。 - 匹配国内电话号码:
\d{4}-\d{7}|\d{3}-\d{8}
评注:用于匹配如 0511-4405222(区号4位)或 021-87888822(区号3位)等固话格式。 - 匹配腾讯 QQ 号:
[1-9][0-9]{4,}
评注:QQ 号通常以非零数字开头,且长度大于等于 5 位。 - 匹配中国邮政编码:
[0-9]\d{5}(?!\d)
评注:精确匹配 6 位数字,负向前瞻断言确保后面不紧跟其他数字。
第4步:身份与设备标识解析
- 匹配身份证号码:
\d{17}[\d|X]|\d{15}
评注:支持 15 位旧版身份证和 18 位新版身份证(末位可为 X)。实际业务中建议结合校验码算法进行更深度的验证。 - 匹配 IP 地址:
((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
评注:这是较为严谨的 IPv4 匹配方式,确保每个段在 0-255 之间,比简单的 \d+.\d+.\d+.\d+ 更安全。
第5步:数值与字符串类型校验
在进行数据录入或数学运算前,对输入内容的类型进行严格约束。
特定数字匹配
- 正整数:
^[1-9]\d*$ - 负整数:
^-?[1-9]\d*$(注:原文此处有歧义,通常负整数以负号开头,见下方综合整数) - 整数(含正负零):
^-?[1-9]\d*$或更严格的^-?\d+$ - 非负整数(正整数 + 0):
^[1-9]\d*|0$ - 正浮点数:
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ - 浮点数:
^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$
评注:处理大量数值数据时有用,具体应用时请注意修正边界情况。
特定字符串匹配
- 纯英文字母:
^[A-Za-z]+$ - 纯大写英文字母:
^[A-Z]+$ - 纯小写英文字母:
^[a-z]+$ - 数字和英文字母组合:
^[A-Za-z0-9]+$ - 数字、字母或下划线:
^\w+$
评注:常用于匹配变量名、文件名或简化的用户名规则。
第6步:账号与特殊格式限定
- 匹配帐号是否合法:
^[a-zA-Z][a-zA-Z0-9_]{4,15}$
评注:要求字母开头,总长度 5-16 位(首字符+4到15个后续字符),允许包含数字和下划线。这是许多系统注册名的基础规则。 - 匹配 HTML 标记:
<(\S*?)[^>]*>.*?</>|<.*? />
评注:网上流传的版本往往无法完美处理复杂的嵌套标记,上述表达式仅能匹配部分简单闭合标签或自结束标签。若需完整解析 HTML,建议使用专业的 HTML 解析库(如 HtmlAgilityPack)而非纯正则。
完成判断
当您的应用程序能够正确通过上述正则表达式验证用户输入,或准确从原始文本中提取出所需的关键数据块时,即表示配置成功。建议在单元测试中覆盖边界案例(如空字符串、超长字符串、特殊符号)以确保鲁棒性。
简要总结
以上就是 C# 常用正则表达式大全的详细内容,更多关于 C# 字符串处理技巧的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









