常用正则表达式速查表
常用正则表达式速查表
本文收集了日常开发中常用的正则表达式,方便快速复制使用。
常用校验总结
-
IPv4:
^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$ -
邮箱:
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ -
手机号:
^1[3-9]\d{9}$ -
域名:
^[a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?(\.[a-zA-Z]{2,})+$ -
URL:
^https?:\/\/[a-zA-Z0-9][-a-zA-Z0-9@:%._\+~#=]{0,255}\.[a-zA-Z]{2,6}\b[-a-zA-Z0-9@:%_+.~#?&/=]*$ -
日期:
^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$ -
时间:
^(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d$ -
身份证号:
^[1-9]\d{5}(?:19|20)\d{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[12]\d|3[01])\d{3}[\dXx]$
IP 地址
IPv4 地址
^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$说明:匹配标准 IPv4 地址,范围 0.0.0.0 - 255.255.255.255
匹配示例:
- ✅
192.168.1.1 - ✅
10.0.0.255 - ✅
255.255.255.255 - ❌
256.0.0.1 - ❌
192.168.1.
IPv6 地址
^([0-9a-fA-F]{1,4}:){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}|:)$简化版(匹配完整格式):
^([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$说明:匹配标准 IPv6 地址
匹配示例:
- ✅
2001:0db8:85a3:0000:0000:8a2e:0370:7334 - ✅
2001:db8:85a3::8a2e:370:7334 - ✅
::1
带端口的 IP 地址
^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(?::[0-9]{1,5})?$说明:匹配带可选端口的 IPv4 地址,端口范围 0-65535
匹配示例:
- ✅
192.168.1.1:8080 - ✅
10.0.0.1
域名
域名(通用)
^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$说明:匹配标准域名,支持多级子域名
匹配示例:
- ✅
example.com - ✅
www.example.com - ✅
api.test.example.cn - ❌
-example.com - ❌
example..com
域名(含端口)
^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}(?::[0-9]{1,5})?$说明:匹配带可选端口的域名
顶级域名
\.(com|org|net|edu|gov|mil|int|eu|cn|jp|kr|tw|hk|au|uk|de|fr|ru)$说明:匹配常见顶级域名
邮箱地址
标准邮箱
^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$简化版(常用):
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$说明:匹配标准邮箱地址
匹配示例:
- ✅
user@example.com - ✅
user.name@example.org - ✅
user+tag@mail.example.com - ❌
@example.com - ❌
user@.com
手机号码
中国大陆手机号
^1[3-9]\d{9}$说明:匹配中国大陆手机号,以1开头,第二位为3-9
匹配示例:
- ✅
13812345678 - ✅
15987654321 - ❌
12012345678 - ❌
1381234567
带区号的手机号
^(\+?86)?1[3-9]\d{9}$说明:匹配带可选+86前缀的手机号
URL
HTTP/HTTPS URL
^https?:\/\/(?:www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b(?:[-a-zA-Z0-9()@:%_\+.~#?&\/=]*)$说明:匹配 HTTP/HTTPS URL
匹配示例:
- ✅
https://www.example.com - ✅
http://api.example.com/path?query=1 - ✅
https://example.cn/page#section
URL 路径提取
https?:\/\/([^\/]+)(.*)说明:分组捕获域名和路径
日期时间
日期格式 YYYY-MM-DD
^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$说明:匹配标准日期格式
匹配示例:
- ✅
2024-01-15 - ✅
2024-12-31 - ❌
2024-13-01 - ❌
2024-02-30
时间格式 HH:MM
^(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d$说明:匹配24小时制时间
匹配示例:
- ✅
14:30:00 - ✅
00:00:00 - ✅
23:59:59 - ❌
25:00:00
日期时间组合
^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01]) (?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d$说明:匹配 YYYY-MM-DD HH:MM:SS 格式
身份证号
18位身份证号
^[1-9]\d{5}(?:19|20)\d{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[12]\d|3[01])\d{3}[\dXx]$说明:匹配18位身份证号(含校验位)
匹配示例:
- ✅
110101199001011234 - ✅
33010620001231001X
银行卡号
银行卡号(16-19位)
^[0-9]{16,19}$说明:匹配常见银行卡号长度
中文字符
匹配中文
[\u4e00-\u9fa5]说明:匹配单个中文字符
全中文
^[\u4e00-\u9fa5]+$说明:匹配纯中文字符串
数字
整数
^-?\d+$说明:匹配正负整数
小数
^-?\d+\.\d+$说明:匹配小数
数字(整数或小数)
^-?\d+(?:\.\d+)?$说明:匹配整数或小数
密码强度
强密码(至少8位,含大小写和数字)
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$说明:至少8位,包含大小写字母和数字
更强密码(含特殊字符)
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$说明:至少8位,包含大小写字母、数字和特殊字符
文件路径
Unix/Linux 路径
^(/[^/]+)+/?$说明:匹配 Unix/Linux 风格路径
匹配示例:
- ✅
/home/user/file.txt - ✅
/var/log/
Windows 路径
^[A-Za-z]:\\(?:[^\\/:*?"<>|\r\n]+\\)*[^\\/:*?"<>|\r\n]*$说明:匹配 Windows 风格路径
匹配示例:
- ✅
C:\Users\file.txt - ✅
D:\Program Files\
HTML 标签
匹配 HTML 标签
<([a-zA-Z][a-zA-Z0-9]*)(?:\s+[^>]*)?>.*?</\1>|<[a-zA-Z][a-zA-Z0-9]*(?:\s+[^>]*)?\s*/?>说明:匹配自闭合标签和成对标签
使用注意事项
-
语言差异:不同编程语言的正则语法略有差异(如 JavaScript 的
\d匹配 Unicode 数字) -
性能考虑:复杂正则表达式可能影响性能,建议在大量数据处理时优化
-
边界匹配:使用
^和$确保完整匹配,避免部分匹配 -
转义问题:在字符串中使用时注意转义特殊字符(如
\\表示\) -
测试验证:使用在线工具测试正则表达式,确保符合预期
提示:复制正则表达式时,请根据实际使用场景调整,必要时添加捕获组或修改匹配逻辑。
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
部分内容可能已过时