Visual Studio中的正则表达式

目录

一、核心概念与应用场景

二、模板及使用方法

[1.查找 / 替换中的正则模板](#1.查找 / 替换中的正则模板)

2.代码中的正则表达式(C#示例)

三、VS正则的特点与注意事项

四、正则表达式常用元字符

五、预定义字符类元字符速查表

六、实战例子:手机号与身份证号的验证

1.手机号验证

2.身份证号验证(18位)


一、核心概念与应用场景

介绍:正则表达式是Visual Studio中强大的文本处理工具,可用于代码查找 / 替换、文本验证和批量修改。

定义:通过模式匹配快速定位、提取或修改文本的工具。

VS中的核心场景:

1.代码重构(如批量替换变量名)

2.文本验证(如输入框手机号 / 身份证号校验)

3.日志分析(提取特定格式数据)

二、模板及使用方法

1.查找 / 替换中的正则模板

在VS的[查找和替换]窗口(Ctrl + F / Ctrl + H)中,勾选[使用正则表达式](Alt + E),即可使用下列模板:

|----------|----------------------------|-------------------|
| 模板类型 | 示例正则 | 用途 |
| 变量名替换 | (\w+)\s*=\s*null; | 匹配所有 变量名 = null; |
| 注释提取 | `//\s*(TODO | FIXME):s*(.*)` |
| HTML标签匹配 | <(\w+).*?>.*?</\1> | 匹配成对HTML标签 |

2.代码中的正则表达式(C#示例)

在WinForm或ASP.NET中,可通过System.Text.RegularExpressions.Regex类实现验证:

using System.Text.RegularExpressions;

//验证手机号

public bool IsValidPhone(string input)

{

return Regex.IsMatch(input,@"^1[3-9]\d{9}$");

}

三、VS正则的特点与注意事项

|------|----------------------------------------------|
| 特点 | 注意事项 |
| 语法扩展 | 支持\w(单词字符)、\d(数字)等元字符,但需要注意转义(如\需要写为\\) |
| 分组捕获 | 使用()捕获分组,替换时使用1 / 2引用(如$1表示第一个分组) |
| 多行模式 | 默认.不匹配换行符,需开启[多行模式]((?m))或使用\r?\n匹配换行 |
| 性能警告 | 复杂正则可能导致卡顿,建议测试后再批量替换 |

四、正则表达式常用元字符

Visual Studio中使用.NET正则表达式,常用元字符如下:

  1. 点号(.):匹配任何单个字符(换行符除外)。

  2. 脱字符(^):匹配输入字符串的开始位置。如果设置了多行模式,也匹配"\n"或"\r"之后的位置。

  3. 美元符($):匹配输入字符串的结束位置。如果设置了多行模式,也匹配"\n"或"\r"之前的位置。

  4. 星号(*):匹配前面的子表达式零次或多次。

5.加号(+):匹配前面的子表达式一次或多次。

  1. 问号(?):匹配前面的子表达式零次或一次。

  2. 花括号({n}、{n,}、{n,m}):{n}表示精确匹配n次;{n,}表示至少匹配n次;{n,m}表示匹配n到m次。

  3. 圆括号(()):将括号之间的表达式定义为"组",并且将匹配这个表达式的字符保存到一个临时区域,可以用\1到\9的符号来引用。

  4. 竖线(|):将两个匹配条件进行逻辑"或"运算。

  5. 反斜杠(\):将下一个字符标记为特殊字符、原义字符、向后引用或八进制转义符。例如,"\n"匹配\n,"\n"匹配换行符,"\"匹配"\"。

  6. 方括号([]):定义字符集合,匹配其中任意一个字符。例如,"[aeiou]"匹配任意一个元音字母。

12.反方括号([^]):匹配不在方括号中的任意字符。例如,"[^0-9]"匹配任意非数字字符。

  1. 连字符(-):在字符类中表示范围。例如,"[a-z]"匹配任意小写字母。

  2. 单词边界(\b):匹配单词边界。例如,"\bcat\b"匹配"cat"但不匹配"category"。

  3. 非单词边界(\B):匹配非单词边界。例如,"\Bcat\B"匹配"scattered"中的"cat"但不匹配单独的"cat"。

五、预定义字符类元字符速查表

|---------|----------------------------|---------------|------------------------------|
| 元字符 | 功能描述 | 简单示例 | 匹配结果 |
| \d | 匹配任意单个数字(等于[0-9]) | \d{3} | 123、456 |
| \D | 匹配任意带个非数字字符 | \D | a、!、 (空格) |
| \w | 匹配字母、数字、下划线 | \w+ | hello、user_01 |
| \W | 匹配非字母、非数字、非下划线 | \W | @、#、+ |
| \s | 匹配任意空白字符(空白格、制表符、换行符等) | a\sb | a b、a\tb |
| \S | 匹配任意非空白字符 | \S | x、5、* |
| \b | 匹配单词边界 | \bcat\b | 独立单词cat,不匹配category里的cat |
| \B | 匹配非单词边界 | \Bact\B | 匹配scattered里的cat |
| \t | 匹配制表符(Tab输入) | a\tb | a b(Tab分隔的a和b) |
| \n | 匹配换行符 | a\nb | a换行后接b |
| \r | 匹配回车符 | a\rb | 回车后切换位置的a和b |

六、实战例子:手机号与身份证号的验证

1.手机号验证

正则表达式:^1[3-9]\d{9}$

解释:以1开头,第二位为3-9,后接9位数字。

VS查找替换场景:

1.打开[查找和替换](Ctrl+H)

2.输入查找内容:(\b1[3-9]\d{9}\b),替换为:**$1**(高亮手机号)

C#代码验证:

string phone = "13800138000";

bool isValid = Regex.IsMatch(phone,@"^1[3-9]\d{9}$"); //返回true

2.身份证号验证(18位)

正则表达式:^\d{17}[\dXx]$

解释:17位数字 + 最后一位(数字或X/x)

VS查找替换场景:

查找内容:(\b\d{17}[\dXx]\b),替换为:ID:$1(标记身份证号)

C#代码验证:

string idCard = "110101199001011234";

bool isValid = Regex.IsMatch(idCard,@"^\d{17}[\dXx]$"); //返回true

相关推荐
唐青枫2 小时前
C#.NET ConcurrentDictionary<TKey, TValue> 深度解析:原理与实践
c#·.net
saoys2 小时前
Opencv 学习笔记:图像膨胀 / 腐蚀(附滑块动态调节腐蚀核大小)
笔记·opencv·学习
Mr -老鬼2 小时前
Android studio 最新Gradle 8.13版本“坑点”解析与避坑指南
android·ide·android studio
小先生8122 小时前
关于vue-element-plus-admin的mini分支踩坑集锦
前端·vue.js·前端框架·c#
唐宋元明清218810 小时前
.NET 磁盘管理-技术方案选型
windows·c#·存储
故事不长丨10 小时前
C#正则表达式完全攻略:从基础到实战的全场景应用指南
开发语言·正则表达式·c#·regex
丝斯201114 小时前
AI学习笔记整理(42)——NLP之大规模预训练模型Transformer
人工智能·笔记·学习
凉、介17 小时前
深入 QEMU Guest Agent:虚拟机内外通信的隐形纽带
c语言·笔记·学习·嵌入式·虚拟化
bugcome_com17 小时前
C# 字符串拼接全面指南
c#·.net·wpf