C#中正则表达式

时间:2024-10-18 12:49:56

在C#中,正则表达式由 System.Text.RegularExpressions 命名空间提供,可以使用 Regex 类来处理正则表达式。以下是一些常见的用法及示例。

C# 中使用正则表达式的步骤:

  1. 引入命名空间

     
    using System.Text.RegularExpressions;

  2. 创建正则表达式对象

    var regex = new Regex(pattern);
  3. 使用方法

    • Match():查找字符串中第一个匹配项。
    • Matches():查找字符串中所有匹配项。
    • Replace():替换匹配的字符串。
    • IsMatch():检查字符串是否匹配。

常见的正则表达式示例:

1. 匹配电子邮件地址
 
string emailPattern = @"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$";

2. 匹配电话号码(格式:123-456-7890)
 
string phonePattern = @"^\d{3}-\d{3}-\d{4}$";

3. 匹配IPv4地址
 
string ipPattern = @"^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$";

4. 匹配日期格式(YYYY-MM-DD)
 
string datePattern = @"^\d{4}-\d{2}-\d{2}$";

5. 匹配时间格式(HH:MM:SS)
 
string timePattern = @"^(0?[0-9]|1[0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?$";

6. 匹配中文字符
 
string chinesePattern = @"[\u4e00-\u9fa5]+";

7. 匹配邮政编码(6位数字)
 
string postalCodePattern = @"^\d{6}$";

C# 示例代码:

以下是一个完整的C#示例,展示如何使用正则表达式来验证电子邮件、电话号码和日期。

using System;  
using System.Text.RegularExpressions;  

class Program  
{  
    static void Main()  
    {  
        string email = "example@example.com";  
        string phone = "123-456-7890";  
        string date = "2023-10-05";  

        // 验证电子邮件  
        string emailPattern = @"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$";  
        if (Regex.IsMatch(email, emailPattern))  
        {  
            Console.WriteLine("有效的电子邮件地址");  
        }  
        else  
        {  
            Console.WriteLine("无效的电子邮件地址");  
        }  

        // 验证电话号码  
        string phonePattern = @"^\d{3}-\d{3}-\d{4}$";  
        if (Regex.IsMatch(phone, phonePattern))  
        {  
            Console.WriteLine("有效的电话号码");  
        }  
        else  
        {  
            Console.WriteLine("无效的电话号码");  
        }  

        // 验证日期  
        string datePattern = @"^\d{4}-\d{2}-\d{2}$";  
        if (Regex.IsMatch(date, datePattern))  
        {  
            Console.WriteLine("有效的日期格式");  
        }  
        else  
        {  
            Console.WriteLine("无效的日期格式");  
        }  
    }  
}

注意事项:

  • 在模式字符串前加 @ 表示原始字符串,因此可以避免转义字符的复杂性。
  • C# 的 Regex 类也支持许多选项(如大小写敏感、单行多行模式等),可以在创建 Regex 对象时指定。
  • 了解正则表达式的执行效率也很重要,特别是在大文本数据上使用时。复杂的模式可能会导致性能问题。