常用正则表达式
2025年2月26日大约 3 分钟
校验数字的表达式
数字匹配规则
- 纯数字:
^[0-9]*$ - n位数字:
^\d{n}$ - 至少n位数字:
^\d{n,}$ - m-n位数字:
^\d{m,n}$ - 零或非零开头的整数:
^(0|[1-9][0-9]*)$ - 非零开头最多两位小数:
^[1-9][0-9]*(\.[0-9]{1,2})?$ - 带1-2位小数的正/负数:
^-?\d+(\.\d{1,2})?$ - 正/负整数或小数:
^[+-]?\d+(\.\d+)?$ - 两位小数的正实数:
^[0-9]+(\.[0-9]{2})?$ - 1-3位小数的正实数:
^[0-9]+(\.[0-9]{1,3})?$
整数匹配
- 非零正整数:
^[1-9]\d*$ 或 ^\+?[1-9]\d*$ - 非零负整数:
^-[1-9]\d*$ - 非负整数:
^\d+$ 或 ^[1-9]\d*|0$ - 非正整数:
^-?[1-9]\d*|0$ 或 ^-?\d+$
浮点数匹配
- 非负浮点数:
^\d+(\.\d+)?$ 或 ^[1-9]\d*\.?\d*|0\.\d*[1-9]\d*$ - 非正浮点数:
^-?(\d+\.?\d*|\.\d+)$ - 正浮点数:
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$
-负浮点数:^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$
-通用浮点数:^-?\d+(\.\d+)?$ 或 ^-?(?:0|[1-9]\d*)(?:\.\d+)?$
校验字符的表达式
字符匹配规则
- 汉字(包括空字符串):
^[\u4e00-\u9fa5]*$ - 英文和数字:
^[A-Za-z0-9]+$(基础版) 或^[A-Za-z0-9]{4,40}$(限制长度版) - 长度为3-20的任意字符:
^.{3,20}$(默认不包含换行符) - 纯英文字母字符串:
^[A-Za-z]+$ - 纯大写英文字母:
^[A-Z]+$ - 纯小写英文字母:
^[a-z]+$ - 英文数字混合字符串:
^[A-Za-z0-9]+$ - 英文、数字、下划线组合:
^\w+$(基础版) 或^\w{3,20}$(限制长度版) - 中文、英文、数字、下划线:
^[\u4E00-\u9FA5A-Za-z0-9_]+$ - 中文、英文、数字(排除下划线):
^[\u4E00-\u9FA5A-Za-z0-9]+$或^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$
特殊符号规则
- 允许包含
^%&',;=?$"等符号:^[^%&',;=?$\x22]+$(说明:匹配不包含这些符号的字符串) - 禁止包含
~的字符:^[^~]+$(说明:匹配不含 ~ 的字符串)
常用信息匹配
- Email地址:
^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$ - 域名:
^[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+$ - URL:
^(https?://)?([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$(支持 http 和 https)
电话与身份验证
- 手机号码(中国大陆):
^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$ - 固定电话号码(格式如 XXX-XXXXXXX):
^\d{3,4}-\d{7,8}$ - 身份证号(15/18位,支持末位X):
^(\d{15}|\d{17}[\dXx])$
账户与密码
- 用户名(字母开头,5-16位,允许下划线):
^[a-zA-Z]\w{4,15}$ - 密码(字母开头,6-18位,字母/数字/下划线):
^[a-zA-Z]\w{5,17}$
强密码(需大小写字母+数字,8-10位):
- 无特殊字符:
^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,10}$ - 允许特殊字符:
^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$
日期与时间
- 日期(YYYY-MM-DD):
^\d{4}-\d{1,2}-\d{1,2} - 月份(01-12 或 1-12):
^(0?[1-9]|1[0-2])$ - 日期(01-31 或 1-31):
^((0?[1-9])|((1|2)[0-9])|30|31)$
金融与格式
- 金额格式(支持千分位和两位小数):
^[1-9]\d{0,2}(,\d{3})*(\.\d{1,2})?$ - 非负整数或小数:
^(0|[1-9]\d*)(\.\d{1,2})?$
其他规则
- XML文件:
^([a-zA-Z]+-?)+[a-zA-Z0-9]+\.[xX][mM][lL]$ - 中文字符:
[\u4e00-\u9fa5] - 双字节字符(如汉字):
[^\x00-\xff] - 空白行:
\n\s*\r - HTML标签:
<\/?(\w+)(\s+[^>]*)?> - 首尾空白字符:
^\s+|\s+$ - 腾讯QQ号(5位以上):
^[1-9]\d{4,}$ - 中国邮政编码:
^[1-9]\d{5}$ - IPv4地址:
((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})(\.((2(5[0-5]|[0-4]\d))|[0-1]?\d{1,2})){3}
特别注意
php的中文正则表达式应该用的正则表达式
/^[\x{4e00}-\x{9fa5}]+$/u标题名称
/^([\x{4e00}-\x{9fa5}]|[a-zA-Z0-9_])+$/u