C# 正则表达式:快速匹配与验证

简介: 正则表达式用于字符串模式匹配,如手机号、邮箱、密码验证等。C# 通过 `System.Text.RegularExpressions` 命名空间中的 `Regex` 类实现。本文示例展示了使用 `RegexHelper` 工具类进行常见验证:`IsPhoneNumber` 验证中国大陆手机号(1开头,共11位);`IsEmail` 校验邮箱格式;`IsValidPassword` 判断密码是否包含字母和数字且长度为8-20位;`ExtractNumbers` 提取字符串中所有数字。代码简洁高效,适用于数据校验与文本处理场景。

正则表达式用于字符串模式匹配(如手机号、邮箱、密码验证),C# 中通过 Regex 类实现。
using System.Text.RegularExpressions;

public class RegexHelper
{
// 验证手机号(中国大陆)
public static bool IsPhoneNumber(string phone)
{
if (string.IsNullOrEmpty(phone)) return false;
// 正则表达式:1开头,11位数字
string pattern = @"^1[3-9]\d{9}$";
return Regex.IsMatch(phone, pattern);
}

// 验证邮箱
public static bool IsEmail(string email)
{
    if (string.IsNullOrEmpty(email)) return false;
    string pattern = @"^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z0-9]{2,4}$";
    return Regex.IsMatch(email, pattern);
}

// 验证密码(8-20位,含字母和数字)
public static bool IsValidPassword(string password)
{
    if (string.IsNullOrEmpty(password)) return false;
    string pattern = @"^(?=.*[A-Za-z])(?=.*\d).{8,20}$";
    return Regex.IsMatch(password, pattern);
}

// 提取字符串中的数字
public static string ExtractNumbers(string str)
{
    if (string.IsNullOrEmpty(str)) return "";
    return Regex.Replace(str, @"[^\d]", "");
}

}

// 调用示例
Console.WriteLine("手机号验证:" + RegexHelper.IsPhoneNumber("13800138000")); // True
Console.WriteLine("邮箱验证:" + RegexHelper.IsEmail("test@example.com")); // True
Console.WriteLine("密码验证:" + RegexHelper.IsValidPassword("Csharp123")); // True
Console.WriteLine("提取数字:" + RegexHelper.ExtractNumbers("C#编程123教程456")); // 123456

相关文章
|
人工智能 计算机视觉
Photoshop2023新版本win11系统安装下载教程
ps迎来了2023的版本,这次的版本提升针对windows11做了特别优化,启动速度比win10快了很多。期盼已久的Win版 PS 2023 终于来了,小编也是通过特殊渠道搞来的,本期带来的WIN版本支持一键安装激活,一次安装永久免费使用众所周知,版本越高,需要的电脑配置也就越来越高。下面放一下2023版本的配置供大家参考。需要注意的是这些版本不再支持windows7系统,仅支持win10及以上的操作系统。
3185 0
|
8月前
|
传感器 存储 安全
嵌入式进阶指南:从“代码搬运工”到“系统架构师”的跃迁之路
教程来源 https://app-a87ujc988w01.appmiaoda.com/ 《嵌入式进阶指南》助力开发者从“代码搬运工”跃升为“系统架构师”。涵盖性能调优、RTOS内核剖析、嵌入式安全、系统架构设计及功耗管理五大核心维度,融合RISC-V、TinyML等前沿趋势,提供实战路径与深度原理。
|
8月前
|
运维 监控 安全
【OpenClaw保姆级 AI 运维实战教程】:部署+百炼API配置+Agent Dashboard实时监控面板+实现全平台运维及避坑指南
“OpenClaw后台运行时,到底在执行什么任务?哪个Agent把Token额度耗光了?会话是不是卡在某个环节?”——这是所有OpenClaw用户的共同痛点。即便官方提供了默认Gateway控制台(127.0.0.1:18789),但该界面更侧重“网关控制”,缺乏Agent运行态的可视化监控,用户只能对着日志文件反复grep,陷入“运维返祖现场”。
2531 4
|
6月前
|
域名解析 网络协议 Ubuntu
改了DNS还是不生效?Ubuntu 24.04的这个坑我帮你踩过了
Ubuntu 24.04因`systemd-resolved`接管DNS,手动改`/etc/resolv.conf`无效,导致Docker拉镜像失败、`ping: Temporary failure in name resolution`。本文详解通过修改`/etc/systemd/resolved.conf`、重建软链接并重启服务,彻底修复DNS解析问题。(239字)
1044 7
改了DNS还是不生效?Ubuntu 24.04的这个坑我帮你踩过了
|
8月前
|
消息中间件 NoSQL Linux
嵌入式开发新手入门教程(第二卷)
教程来源 https://app-a7illrp9pngh.appmiaoda.com/ 本课程系统讲解嵌入式软件设计核心知识:涵盖嵌入式C编程、Linux开发、系统编程与设备驱动;前瞻边缘智能(TinyML)、RISC-V架构及工具链演进趋势;强调“硬件→裸机→RTOS→Linux”渐进路径与动手实践,助你夯实基础、迈向万物互联。
|
8月前
|
传感器 机器人 Linux
嵌入式开发新手入门教程(第一卷)
教程来源 https://app-a6nw7st4g741.appmiaoda.com/ 嵌入式系统是嵌入设备内部的专用计算机系统,广泛应用于智能手表、汽车电控、医疗设备乃至火星车等。其由硬件(MCU、存储器、外设)和软件(裸机/RTOS/嵌入式Linux)构成。新手可按电路与C语言→单片机开发→RTOS与ARM深入三阶段学习,推荐STM32平台入门。
|
关系型数据库 MySQL 数据库连接
Unity连接Mysql数据库 增 删 改 查
在 Unity 中连接 MySQL 数据库,需使用 MySQL Connector/NET 作为数据库连接驱动,通过提供服务器地址、端口、用户名和密码等信息建立 TCP/IP 连接。代码示例展示了如何创建连接对象并执行增删改查操作,确保数据交互的实现。测试代码中,通过 `MySqlConnection` 类连接数据库,并使用 `MySqlCommand` 执行 SQL 语句,实现数据的查询、插入、删除和更新功能。
|
网络架构
如何在路由器上配置静态路由表?
【8月更文挑战第17天】如何在路由器上配置静态路由表?
2787 2
|
人工智能 安全 机器人
国内怎么使用claude?这篇文章教会你!
渴望体验 Anthropic 公司的杰作
4428 1
|
存储 JavaScript 前端开发
decimal.js库的安装和使用方法
【10月更文挑战第24天】decimal.js 是一个非常实用的高精度计算库,通过合理的安装和使用,可以在 JavaScript 中实现精确的数值计算和处理。你可以根据具体的需求和项目情况,灵活运用该库来解决数字精度丢失的问题。