正则表达式

1.基础正则表达式速查表

1.1 字符

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

1.2 分组和引用

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

1.3 锚点/边界

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

1.4 数量表示

表达式 描述
? 匹配前面的表达式0个或1个。即表示可选项。
+ 匹配前面的表达式至少1个。
* 匹配前面的表达式0个或多个。
{m} 匹配前面的表达式m个。
{m,} 匹配前面的表达式最少m个。
{m,n} 匹配前面的表达式最少m个,最多n个。

1.5 预查断言

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

1.6 特殊标志

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

2.常用正则表达式示例

2.1 数字校验

描述 正则表达式 备注
数字 ^[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.\d 0.\d*[1-9]\d*
正浮点数 ^(?:[1-9]\d.\d 0.\d*[1-9]\d*)$
负浮点数 ^-(?:[1-9]\d.\d 0.\d*[1-9]\d*)$
非正浮点数 ^(?:-(?:[1-9]\d*.\d+ 0.\d*[1-9]\d*)
非负浮点数 ^(?:[1-9]\d*.\d+ 0.\d+
仅一位小数 ^-?(?:0 [1-9][0-9]*).[0-9]{1}$
最少一位小数 ^-?(?:0 [1-9][0-9]*).[0-9]{1,}$
最多两位小数 ^-?(?:0 [1-9][0-9]*).[0-9]{1,2}$
连续重复的数字 ^(\d)\1+$ 例如:111,222

2.2 字符校验

描述 正则表达式 备注
中文 ^[\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+$ 例如:aaa,bbb
长度为n的字符串 ^.{n}$
ASCII ^[ -~]$

2.3 日期和时间校验

描述 正则表达式 备注
日期 ^\d{1,4}-(?:1[0-2] 0?[1-9])-(?:0?[1-9]
日期 ^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9] 1[0-2])-(?:0[1-9]
时间 ^(?:1[0-2] 0?[1-9]):[0-5]\d:[0-5]\d$
时间 ^(?:[01]\d 2[0-3]):[0-5]\d:[0-5]\d$
日期+时间 ^(\d{1,4}-(?:1[0-2] 0?[1-9])-(?:0?[1-9]

2.4 日常生活相关

描述 正则表达式 备注
中文名 ^[\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])
火车车次 ^[GCDZTSPKXLY1-9]\d{1,4}$ 例如:G1234
手机号 ^(?:(?:+ 00)86)?1[3-9]\d{9}$
手机号 ^(?:(?:+ 00)86)?1(?:(?:3[\d])
固话号码 ^(?:(?:\d{3}-)?\d{8} ^(?:\d{4}-)?\d{7,8})(?:-\d+)?$
手机IMEI码 ^\d{15,17}$ 一般是15位
邮编 ^(?:0[1-7] 1[0-356]
统一社会信用代码 ^[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}$
身份证号码(1代) ^[1-9]\d{7}(?:0\d 10
身份证号码(2代) ^[1-9]\d{5}(?:18 19
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}
银行卡卡号 ^[1-9]{1}(?:\d{15} \d{18})$

2.5 互联网相关

描述 正则表达式 备注
域名 ^[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})+$ 支持中文,例如:codesheep@cs.com
用户名 ^[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][0-9]{1,3}
IPv4地址 ^(?:(?:\d [1-9]\d
IPv4地址+端口 ^(?:(?:\d [1-9]\d
IPv6地址 ^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4} ([0-9a-fA-F]{1,4}:){1,7}:
IPv6地址+端口 ^[(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4} ([0-9a-fA-F]{1,4}:){1,7}:
子网掩码 ^(?:254 252
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
图片后缀 .(gif png
视频后缀 .(swf avi
图片链接 (?:https?://)?[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(?:.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+.+.(gif png
视频链接 (?:https?://)?[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(?:.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+.+.(swf avi
迅雷链接 thunderx?://[a-zA-Z\d]+=
ed2k链接 ed2k://|file|.+|/
磁力链接 magnet:?xt=urn:btih:[0-9a-fA-F]{40,}.*

2.6 其他

描述 正则表达式 备注
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})$
BASE64格式 ^\sdata:(?:[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})$
SQL语句 ^(?:select drop
Java包名 ^(?:[a-zA-Z_]\w*)+(?:[.][a-zA-Z_]\w*)+$ 例如:com.r2coding.controller
文件扩展名 .(?:doc pdf
HTML标签 <(\w+)[^>]>(.?</\1>)? 例如:
HTML注释 例如:

正则表达式
https://pudding.nousbuild.com/regular-expression/
作者
Haoning Wu
发布于
2022年7月27日
更新于
2024年10月14日
许可协议