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,@"^13-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.手机号验证

正则表达式:^13-9\d{9}$

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

VS查找替换场景:

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

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

C#代码验证:

string phone = "13800138000";

bool isValid = Regex.IsMatch(phone,@"^13-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

相关推荐
隔窗听雨眠31 分钟前
Typora插件开发指南:从零打造IDE级写作环境
ide·typora
AOwhisky1 小时前
学习自测与解析:MySQL第五、六、七期核心知识点详解
运维·数据库·笔记·学习·mysql·云计算
niuniuyi~1 小时前
QT学习笔记
笔记·qt·学习
咸甜适中1 小时前
rust语言学习笔记Trait(十六)Error(错误)
笔记·学习·rust
xuhaoyu_cpp_java2 小时前
项目学习(三)代码生成器
java·经验分享·笔记·学习
深海潜水员2 小时前
【从零开始的C#游戏开发课程】- FarmStory1.0 日志系统和游戏资源的管理
游戏·c#·monogame
专注_每天进步一点点2 小时前
IDEA中,Apifox Helper 的 2.0.15-243版本的插件 导出指定的接口,入参的中文名为空,描述为空
java·ide·intellij-idea
my_daling2 小时前
松下伺服驱动器参数保存流程(已在松下A5上验证)
笔记
叶帆2 小时前
【YFIOs】用C#开发硬件之WiFi网络
开发语言·网络·c#
郝亚军3 小时前
如何在vscode上运行python程序
ide·vscode·编辑器