《正则表达式速查备忘手册》

  • 由于时间仓促和个⼈精⼒有限,难免会有疏漏和不当的地⽅,还望多多谅解
  • 该⽂档会持续更新,有新东⻄再往⾥加
  • 后续整理出来的资源和文档会第一时间在此分享 ↓

本手册在线阅读地址为:https://www.r2coding.com/

附:其他干货文档笔记下载

(点击标题链接可跳转)

基础正则表达式速查表

字符

表达式描述
[abc]字符集。匹配集合中所含的任一字符。
[^abc]否定字符集。匹配任何不在集合中的字符。
[a-z]字符范围。匹配指定范围内的任意字符。
.匹配除换行符以外的任何单个字符。
\转义字符。
\w匹配任何字母数字,包括下划线(等价于[A-Za-z0-9_])。
\W匹配任何非字母数字(等价于[^A-Za-z0-9_])。
\d数字。匹配任何数字。
\D非数字。匹配任何非数字字符。
\s空白。匹配任何空白字符,包括空格、制表符等。
\S非空白。匹配任何非空白字符。

分组和引用

表达式描述
(expression)分组。匹配括号里的整个表达式。
(?:expression)非捕获分组。匹配括号里的整个字符串但不获取匹配结果,拿不到分组引用。
\num对前面所匹配分组的引用。比如(\d)\1可以匹配两个相同的数字,(Code)(Sheep)\1\2则可以匹配CodeSheepCodeSheep

锚点/边界

表达式描述
^匹配字符串或行开头。
$匹配字符串或行结尾。
\b匹配单词边界。比如Sheep\b可以匹配CodeSheep末尾的Sheep,不能匹配CodeSheepCode中的Sheep
\B匹配非单词边界。比如Code\B可以匹配HelloCodeSheep中的Code,不能匹配HelloCode中的Code

数量表示

表达式描述
?匹配前面的表达式0个或1个。即表示可选项。
+匹配前面的表达式至少1个。
*匹配前面的表达式0个或多个。
``或运算符。并集,可以匹配符号前后的表达式。
{m}匹配前面的表达式m个。
{m,}匹配前面的表达式最少m个。
{m,n}匹配前面的表达式最少m个,最多n个。

预查断言:

表达式描述
(?=)正向预查。比如Code(?=Sheep)能匹配CodeSheep中的Code,但不能匹配CodePig中的Code
(?!)正向否定预查。比如Code(?!Sheep)不能匹配CodeSheep中的Code,但能匹配CodePig中的Code
(?<=)反向预查。比如(?<=Code)Sheep能匹配CodeSheep中的Sheep,但不能匹配ReadSheep中的Sheep
(?<!)反向否定预查。比如(?<!Code)Sheep不能匹配CodeSheep中的Sheep,但能匹配ReadSheep中的Sheep

特殊标志

表达式描述
/.../i忽略大小写。
/.../g全局匹配。
/.../m多行修饰符。用于多行匹配。

常用正则表达式示例

数字校验

描述正则表达式备注
数字^[0-9]*$
n位数字^\d{n}$
至少n位数字^\d{n,}$
m~n位数字^\d{m,n}$
整数^(-?[1-9]\d*)$非0开头,包括正整数和负整数
正整数^[1-9]\d*$
负整数^-[1-9]\d*$
非负整数`^(([1-9]\d*)0)$`
非正整数`^((-[1-9]\d*)0)$`
浮点数`^-?(?:[1-9]\d.\d0.\d[1-9]\d0.0+0)$`包括正浮点数和负浮点数
正浮点数`^(?:[1-9]\d.\d0.\d[1-9]\d)$`
负浮点数`^-(?:[1-9]\d.\d0.\d[1-9]\d)$`
非正浮点数`^(?:-(?:[1-9]\d*.\d+0.\d[1-9]\d)0.0+0)$`包含0
非负浮点数`^(?:[1-9]\d*.\d+0.\d+0.0+0)$`包含0
仅一位小数`^-?(?:01-9*).[0-9]{1}$`
最少一位小数`^-?(?:01-9*).[0-9]{1,}$`
最多两位小数`^-?(?:01-9*).[0-9]{1,2}$`
连续重复的数字^(\d)\1+$例如:111222

字符校验

描述正则表达式备注
中文^[\u4E00-\u9FA5]+$
全角字符^[\uFF00-\uFFFF]+$
半角字符^[\u0000-\u00FF]+$
英文字符串(大写)^[A-Z]+$
英文字符串(小写)^[a-z]+$
英文字符串(不区分大小写)^[A-Za-z]+$
中文和数字`^(?:[\u4E00-\u9FA5]{0,}\d)+$`
英文和数字^[A-Za-z0-9]+$
数字、英文字母或者下划线组成的字符串^\w+$
中文、英文、数字包括下划线^[\u4E00-\u9FA5\w]+$
不含字母的字符串^[^A-Za-z]*$
连续重复的字符串^(.)\1+$例如:aaabbb
长度为n的字符串^.{n}$
ASCII^[ -~]$

日期和时间校验

描述正则表达式备注
日期`^\d{1,4}-(?:1[0-2]0?[1-9])-(?:0?[1-9][1-2]\d3031)$`弱校验,例如:2022-06-12
日期`^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]1[0-2])-(?:0[1-9]1[0-9]2[0-8])(?:0[13-9]1[0-2])-(?:2930)(?:0[13578]1[02])-31)(?:[0-9]{2}(?:0[48]246813579)(?:0[48]246813579)00)-02-29)$`严格校验,考虑平闰年
时间`^(?:1[0-2]0?[1-9]):[0-5]\d:[0-5]\d$`12小时制,例如:11:21:31
时间`^(?:[01]\d2[0-3]):[0-5]\d:[0-5]\d$`24小时制,例如:23:21:31
日期+时间`^(\d{1,4}-(?:1[0-2]0?[1-9])-(?:0?[1-9][1-2]\d3031)) ((?:[01]\d2[0-3]):[0-5]\d:[0-5]\d)$`例如:2000-11-11 23:20:21

日常生活相关

描述正则表达式备注
中文名^[\u4E00-\u9FA5·]{2,16}$
英文名^[a-zA-Z][a-zA-Z\s]{0,20}[a-zA-Z]$
车牌号^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z][A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]$不含新能源
车牌号`^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领]A-HJ-NP-Z(?:(?:\d{5}[A-HJK])(?:A-HJK[0-9]{4})))$`包含新能源
火车车次^[GCDZTSPKXLY1-9]\d{1,4}$例如:G1234
手机号`^(?:(?:+00)86)?1[3-9]\d{9}$`弱匹配
手机号`^(?:(?:+00)86)?1(?:(?:3[\d])(?:4[5-79])(?:5[0-35-9])(?:6[5-7])(?:7[0-8])(?:8[\d])(?:9[189]))\d{8}$`严格匹配
固话号码`^(?:(?:\d{3}-)?\d{8}^(?:\d{4}-)?\d{7,8})(?:-\d+)?$`
手机IMEI码^\d{15,17}$一般是15位
邮编`^(?:0[1-7]1[0-356]2[0-7]3[0-6]4[0-7]5[1-7]6[1-7]7[0-5]8[013-6])\d{4}$`例如:211100
统一社会信用代码^[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}$
身份证号码(1代)`^[1-9]\d{7}(?:0\d101112)(?:0[1-9]1-23031)\d{3}$`15位数字
身份证号码(2代)`^[1-9]\d{5}(?:181920)\d{2}(?:0[1-9]101112)(?:0[1-9][1-2]\d3031)\d{3}[0-9Xx]$`18位数字
QQ号^[1-9][0-9]{4,}$一般是5到10位
微信号^[a-zA-Z][-_a-zA-Z0-9]{5,19}$一般6~20位,字母开头,可包含字母、数字、-、\_,不含特殊字符
股票代码`^(s[hz]S[HZ])(000[\d]{3}002[\d]{3}300[\d]{3}600[\d]{3}60[\d]{4})$`A股,例如:600519
银行卡卡号`^[1-9]{1}(?:\d{15}\d{18})$`一般为19位

互联网相关

描述正则表达式备注
域名^[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(?:\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+$例如:r2coding.com
网址^(?:https?:\/\/)?[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(?:\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+$例如:https://www.r2coding.com/
带端口号的网址(或IP)^(?:https?:\/\/)?[\w-]+(?:\.[\w-]+)+:\d{1,5}\/?$例如:http://127.0.0.1:8888/
URL^https?:\/\/(?:www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b(?:[-a-zA-Z0-9()!@:%_\+.~#?&\/\/=]*)$例如:https://www.r2coding.com/#/README?id=1
邮箱email^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(?:\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+$支持中文,例如:[email protected]
用户名^[a-zA-Z0-9_-]{4,20}$4到20位
弱密码^[\w]{6,16}$6~16位,包含大小写字母和数字的组合
强密码^.*(?=.{6,})(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@\.#$%^&*? ]).*$至少6位,包括至少1个大写字母,1个小写字母,1个数字,1个特殊字符
端口号`^(?:[0-9]1-9{1,3}1-5{4}60-4{3}650-4{2}6550-26553[0-5])$`例如:65535
IPv4地址`^(?:(?:\d[1-9]\d1\d\d2[0-4]\d25[0-5]).){3}(?:\d[1-9]\d1\d\d2[0-4]\d25[0-5])$`例如:192.168.31.1
IPv4地址+端口`^(?:(?:\d[1-9]\d1\d\d2[0-4]\d25[0-5]).){3}(?:\d[1-9]\d1\d\d2[0-4]\d25[0-5])(?::(?:[0-9]1-9{1,3}1-5{4}60-4{3}650-4{2}6550-26553[0-5]))?$`例如:192.168.31.1:8080
IPv6地址`^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}([0-9a-fA-F]{1,4}:){1,7}:([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6}):((:[0-9a-fA-F]{1,4}){1,7}:)fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5](2[0-4]1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5](2[0-4]1{0,1}[0-9]){0,1}[0-9])([0-9a-fA-F]{1,4}:){1,4}:((25[0-5](2[0-4]1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5](2[0-4]1{0,1}[0-9]){0,1}[0-9]))$`例如:CDCD:910A:2222:5498:8475:1111:3900:2020
IPv6地址+端口`^[(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}([0-9a-fA-F]{1,4}:){1,7}:([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6}):((:[0-9a-fA-F]{1,4}){1,7}:)fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5](2[0-4]1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5](2[0-4]1{0,1}[0-9]){0,1}[0-9])([0-9a-fA-F]{1,4}:){1,4}:((25[0-5](2[0-4]1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5](2[0-4]1{0,1}[0-9]){0,1}[0-9]))](?::(?:[0-9]1-9{1,3}1-5{4}60-4{3}650-4{2}6550-26553[0-5]))?$`例如:[CDCD:910A:2222:5498:8475:1111:3900:2020]:9800
子网掩码`^(?:254252248240224192128).0.0.0255.(?:2542522482402241921280).0.0255.255.(?:2542522482402241921280).0255.255.255.(?:2552542522482402241921280)$`例如:255.255.255.0
MAC地址`^(?:(?:[a-f0-9A-F]{2}:){5}(?:[a-f0-9A-F]{2}-){5})[a-f0-9A-F]{2}$`
Version版本号^\d+(?:\.\d+){2}$例如:12.1.1
图片后缀`.(gifpngjpgjpegwebpsvgpsdbmptif)+`可按需增删扩展名集合
视频后缀`.(swfaviflvmpgrmmovwavasf3gpmkvrmvbmp4)+`可按需增删扩展名集合
图片链接`(?:https?://)?a-zA-Z0-9{0,62}(?:.a-zA-Z0-9{0,62})+.+.(gifpngjpgjpegwebpsvgpsdbmptif)`可按需增删扩展名集合
视频链接`(?:https?://)?a-zA-Z0-9{0,62}(?:.a-zA-Z0-9{0,62})+.+.(swfaviflvmpgrmmovwavasf3gpmkvrmvbmp4)`可按需增删扩展名集合
迅雷链接thunderx?:\/\/[a-zA-Z\d]+=
ed2k链接`ed2k://\file\.+\/`
磁力链接magnet:\?xt=urn:btih:[0-9a-fA-F]{40,}.*

其他

描述正则表达式备注
Windows文件路径^[a-zA-Z]:(?:\\[\w\u4E00-\u9FA5\s]+)+[.\w\u4E00-\u9FA5\s]+$例如:C:\Users\Administrator\Desktop\a.txt
Windows文件夹路径^[a-zA-Z]:(?:\\[\w\u4E00-\u9FA5\s]+)+$例如:C:\Users\Administrator\Desktop
Linux文件路径^\/(?:[^/]+\/)*[^/]+$例如:/root/library/a.txt
Linux文件夹路径^\/(?:[^/]+\/)*$例如:/root/library/
MD5格式`^(?:[a-f\d]{32}[A-F\d]{32})$`32位MD5,例如:7552E7071B118CBFFEC8C930455B4297
BASE64格式^\s*data:(?:[a-z]+\/[a-z0-9-+.]+(?:;[a-z-]+=[a-z0-9-]+)?)?(?:;base64)?,([a-z0-9!$&',()*+;=\-._~:@/?%\s]*?)\s*$例如:data:image/jpeg;base64,xxxx==
UUID^[a-f\d]{4}(?:[a-f\d]{4}-){4}[a-f\d]{12}$例如:94f9d45a-71b0-4b3c-b69d-20c4bc9c8fdd
16进制^[A-Fa-f0-9]+$例如:FFFFFF
16进制颜色`^#?([0-9a-fA-F]{3}[0-9a-fA-F]{6})$`例如:#FFFFFF
SQL语句`^(?:selectdropdeletecreateupdateinsert).*$`
Java包名^(?:[a-zA-Z_]\w*)+(?:[.][a-zA-Z_]\w*)+$例如:com.r2coding.controller
文件扩展名`.(?:docpdftxt)`可按需增删扩展名集合
HTML标签<(\w+)[^>]*>(.*?<\/\1>)?例如:<div class="navigator"></div>
HTML注释<!--(.*?)-->例如:<!--注释-->

花絮

该⽂档会持续更新,有新东⻄再往⾥加。另外由于时间仓促和个⼈精⼒有限,难免会有疏漏和不当的地⽅,还望多多谅解。

后续整理出来的资源和文档会第一时间在此分享 ↓

本文档 GitHub https://github.com/rd2coding/Road2Coding 已经收录,里面有我整理的6大编程方向的自学路线+知识点大梳理我的简历面试考点几本硬核pdf笔记,以及程序员生活和感悟,欢迎star。

另附:其他干货文档笔记下载(点击标题链接可跳转):