当前位置: 首页 > news >正文

C#中正则表达式

在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 对象时指定。
  • 了解正则表达式的执行效率也很重要,特别是在大文本数据上使用时。复杂的模式可能会导致性能问题。
http://www.lryc.cn/news/465199.html

相关文章:

  • 【python写一个带有界面的计算器】
  • K230获取单摄像头的 3 个通道图像并显示在 HDMI 显示器上
  • nginx中的HTTP 负载均衡
  • package.json 里的 dependencies和devDependencies区别
  • 【功能安全】HARA分析中的SEC如何确认
  • 阿里云Docker镜像源安装Docker的步骤
  • 得一微全资子公司硅格半导体携手广东工业大学,荣获省科学技术奖一等奖
  • @SneakyThrows不合理使用,是真的坑
  • 怎么把ppt页面切换为竖页?首推使用这个在线ppt工具!
  • 【JavaEE】——自定义协议方案、UDP协议
  • python爬虫快速入门之---Scrapy 从入门到包吃包住
  • 【Photoshop——肤色变白——曲线】
  • [python]从零开始的API调用教程
  • FFmpeg 怎样根据图片和文本生成视频
  • paddlepaddle显存未正常释放
  • websocket的使用
  • docker如何建立本地私有仓库,并将docker镜像推到私有仓库
  • vllm启动大语言模型时指定chat_template
  • 网络相关(HTTP/TCP/UDP/IP)
  • TF卡长期不用会丢失数据吗?TF卡数据恢复容易吗?
  • Flink状态一致性保证
  • 前端一键复制解决方案分享
  • 麒麟操作系统swap使用率过高的排查思路
  • 爬虫python=豆瓣Top250电影
  • 【Eclipse系列】解决Eclipse中xxx.properties文件中文乱码问题
  • mysql主从复制及故障修复
  • 基于springboot的网上服装购物商城系统
  • aws(学习笔记第六课) AWS的虚拟私有,共有子网以及ACL,定义公网碉堡主机子网以及varnish反向代理
  • 接口测试(三)jmeter——连接mysql数据库
  • 双十一购物节有哪些好物值得入手?2024双十一好物清单合集分享