在C#中,正则表达式由 System.Text.RegularExpressions
命名空间提供,可以使用 Regex
类来处理正则表达式。以下是一些常见的用法及示例。
C# 中使用正则表达式的步骤:
-
引入命名空间:
using System.Text.RegularExpressions;
-
创建正则表达式对象:
var regex = new Regex(pattern);
-
使用方法:
-
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
对象时指定。 - 了解正则表达式的执行效率也很重要,特别是在大文本数据上使用时。复杂的模式可能会导致性能问题。