常用 .NET C# 正则表达式示例 – 轻松掌握匹配、验证、提取与替换技巧

在 .NET 的 C# 开发中,正则表达式(Regex)是处理字符串匹配、验证、提取与替换的强大工具。本文将从多个典型应用场景出发,展示实用的正则表达式写法与方法调用,助你提升开发效率。

.NET使用正则表达式准备工作

使用正则表达式前,你需要导入对应命名空间:

using System.Text.RegularExpressions;

你可以通过 Regex.IsMatch 判断字符串是否符合某种模式;使用 Regex.Match 获取第一个匹配项,或用 Regex.Matches 获取所有匹配项;还可以使用 Regex.Replace 批量替换目标内容。

常用正则表达式使用示例

1. 电子邮箱验证

判断字符串是否是合法的邮箱格式,可以使用如下模式:

string pattern = @"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$";
bool isEmail = Regex.IsMatch(input, pattern);

该模式要求邮箱用户名部分由字母、数字或部分特殊字符组成,中间以 @ 分隔,域名后缀为 2 个以上字符。

2. 手机号格式校验

检查字符串是否符合常见的手机号码格式(支持带国家代码或连字符):

Regex regex = new Regex(@"^\+?\d{0,2}-?\d{4,5}-?\d{5,6}$");
bool isValid = regex.IsMatch(phoneNumber);

该表达式允许带 + 符号、可选区号、以及中间带 - 分隔的号码结构。

3. 提取数字或特定内容

若需从字符串中提取数字,例如取得第一个匹配到的数字子串:

Match match = Regex.Match(input, @"\d+");
if (match.Success) {
    string digits = match.Value;
}

若要获取所有匹配项,则使用 Regex.Matches 并遍历结果集合。

4. 替换空白字符或特殊字符

将字符串中多个连续空白字符替换为单个空格:

string cleaned = Regex.Replace(input, @"\s+", " ");

或者,删除所有非字母数字字符:

string result = Regex.Replace(input, @"[^0-9a-zA-Z]+", "");

如果希望保留特定符号(如逗号、冒号),可以限定范围为 [^0-9a-zA-Z:,]+。

5. 分割字符串(Split)

使用正则表达式按非数字字符将字符串拆分:

string[] parts = Regex.Split(input, @"\D+");

该写法将字符串按所有非数字部分拆分,提取数字子串。

6. 高级示例:匹配货币格式

若你需要识别美式货币格式(含千分位分隔符和两位小数):

string pattern = @"\$[0-9]{1,3}(?:,?[0-9]{3})*(?:\.[0-9]{2})?";
bool isCurrency = Regex.IsMatch(input, pattern);

该正则支持例如 $1,234.56 或 $1234 等格式。

总结与推荐使用场景

  • 输入验证:如邮箱、手机号、邮政编码、日期格式等。
  • 数据提取:从复杂文本中提取数字、邮箱、URL、货币等信息。
  • 文本清洗与替换:去除多余空白、特殊字符统一清理、敏感信息替换(如邮箱遮蔽)。

掌握这些常用示例后,你可以根据实际需求灵活调整正则表达式模式,并搭配 RegexOptions 调节大小写忽略、多行匹配等行为,进一步提升匹配效率与准确性。

评论