正则表达式基础内容

正则表达式(Regular Expression):以特定的字符串模式获取指定字符串。

元字符 匹配一个位置或字符集合中的一个字符

两种类型:

1. 匹配位置的元字符

🍸^匹配开始

^start here

🍸$匹配结束

end here$

【^$】 表示匹配一个空行

🍸\b匹配一个位置

\b不能匹配任何空格符号、标点符号或者换行符号中任何一个。

\bStr 匹配以Str开头的字符串
\bString\b 匹配String字符串

2. 匹配字符的元字符

🍡\. 匹配除了换行符之外的任意字符
🍡\w 匹配任意单词字符包含字母、数字、下划线和汉字
🍡\W 匹配非单词字符

w -> word: 字符eg: 字母、数字、下划线和汉字

🍡\s 匹配任意空白字符包含空格、制表符、换行符、中文全角空格等
🍡\S 匹配任意非空白字符

s -> special: 特殊字符 eg: 空格、制表符、换行符

🍡\d 匹配任意数字
🍡\D 匹配非数字字符

字符类 []

元字符通常一次只匹配一个位置或字符集合中的一个字符。因此要匹配字符集合就要使用字符类 []

[0123456679] # 匹配数字

连接符 -

[0-9],[a-zA-z]

只有在字符类中“-”不是第一个字符时候,才有特殊意义

[-a] # 匹配字符 -或a

如果字符^是第一个字符那么不匹配带有后面的字符

^ 和 []表示取非

[^aAeEiIoOuU] # 匹配非元音字符

替换符 "|"

优先匹配左侧表达式
(?(表达式)yes|no)表达式要么与yes部分匹配要么与no部分匹配

eg: (?(name)yes|no)以name命名的字符串要么与yes部分匹配,要么与no部分匹配首先回匹配|左侧,若未成功再匹配右侧!

限定符

{n} 重复n次
{n,} 重复<=n次
{n,m} 重复 n<= 次数 <=m
* 重复 >= 0次
+ 重复 >= 1次
? 重复 1或0次
*? 尽可能少的使用重复的第一个匹配
+? 尽可能少的使用重复,但至少使用一次
?? 使用0次重复或一次重复
{n}? 等同于{n}
{n,}? 尽可能少的使用重复,但至少使用n次
{n,m}? 尽可能少的使用重复,但介于n次和m次之间

分组 “(” ")"

通过()分组后将"()"之间的表达式看作一个整体来处理
eg: (abc){1,2}匹配abc字符串出现一次或两次的字符串

key desc
(expression) 匹配字符串expression,并将匹配的文本保存到自动命名的组里
(?expression) 匹配字符串expression,并将匹配的文本以name名称,名称不能有标点符号且以数字开头
(?:expression) 匹配字符串expression,不保存文本,也不分配字号)
(?=expression) 匹配字符串expression前面的位置
(?!expression) 匹配后面不是字符串expression的位置
(?<=expression 匹配字符串expression后面的位置
(?<!expression) 匹配前面不是字符串expression的位置
(?>expression) 只匹配字符串expression一次

反向引用 "\数字"

分组之后,每个分子将被赋予一个组号,编号规则是从左往右,以"("为标志,从1开始编号
eg: \b(\w)\1\b 实际上和\b(\w)\w\b类似,不同的是 \1所在地方指的是第一个()里面的内容

\b(\w)\1\b 匹配的是 aa而匹配不到ab
\b(\w)\w\b 匹配的是 aa和bb

零宽度断言

keywords DESC
^ 匹配开始位置
$ 匹配结束位置
\A 匹配必须出现在字符串开头
\Z 匹配必须出现在字符串结尾,或者字符串结尾处的换行符之前
\z 匹配必须出现在字符串结尾
\G 匹配必须出现在上一个匹配结束的地方
\b 匹配字符的开始或结束位置
\B 匹配不是在字符的开始或结束位置

字符转义 ""

\\->\ \^ -> ^ ```[->[ ]->]``` \$->$
\a(响铃) \b(单词边界或字符类中退格符) \t制表符 \r(回车符) \v(垂直制表符)
\f(换页符) \n(换行符) \e(回退符) \040 匹配8进制 \x20 匹配16进制

案例

二进制数值: ^(0|(1[0-1]*))$
八进制数值:^(0|([1-7][0-7]*))$
十六进制数值:^(0|([1-9A-Fa-f][0-9A-Fa-f]*))$
国内手机号码: \b0?(12\d{9})|(15[89]\d{8}\b
身份证号码(18位):^\d{6}((1[89])|(2\d))\d{2}((0\d)|(1[0-2]))(3[01])|([0-2]\d))\d{3}(\d|X)$
 一、数字的正则表达式
    1.数字:^[0-9]*$
    2.n位的数字:^\d{n}$
    3.至少n位的数字:^\d{n,}$
    4.m-n位的数字:^\d{m,n}$
    5.零和非零开头的数字:^(0|[1-9][0-9]*)$
    6.非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$
    7.带1-2位小数的正数或负数:^(\-)?\d+(\.\d{1,2})?$
    8.正数、负数、和小数:^(\-|\+)?\d+(\.\d+)?$
二、字符的正则表达式
    1.汉字:^[\u4e00-\u9fa5]{0,}$
    2.英文和数字:^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$
    3.长度为3-20的所有字符:^.{3,20}$
    4.由26个英文字母组成的字符串:^[A-Za-z]+$
    5.由26个大写英文字母组成的字符串:^[A-Z]+$
    6.由26个小写英文字母组成的字符串:^[a-z]+$
    7.由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$
    8.由数字、26个英文字母或者下划线组成的字符串:^\w+$ 或 ^\w{3,20}$
    9.中文、英文、数字包括下划线:^[\u4E00-\u9FA5A-Za-z0-9_]+$
    10.中文、英文、数字但不包括下划线等符号:^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$
    11.禁止输入含有~的字符:[^~\x22]+
特殊需求正则表达式
    1.Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
    2.域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
    3.URL:[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
    4.手机号码:^[1][3,4,5,7,8][0-9]{9}$
    5. 身份证号:
        1518位身份证:^\d{15}|\d{18}$
        15位身份证:^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$
        18位身份证:^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$
        短身份证号码(数字、字母x结尾):^([0-9]){7,18}(x|X)?$ 或 ^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$
    6.帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
    7.密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):^[a-zA-Z]\w{5,17}$
    8.强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间):^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$
    9.日期格式:^\d{4}-\d{1,2}-\d{1,2}
    10.IP地址:\d+\.\d+\.\d+\.\d+ 
    11.中文字符的正则表达式:[\u4e00-\u9fa5]
posted @   Felix_Openmind  阅读(151)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
*{cursor: url(https://files-cdn.cnblogs.com/files/morango/fish-cursor.ico),auto;}
点击右上角即可分享
微信分享提示