元字符

字符和数字

元字符 匹配情况
. 匹配除换行符外的任意字符
[a-z] 匹配任何包含小写字母 a-z的字符串
[A-Z] 匹配任何包含大写字母 A-Z的字符串
[0-9] 匹配任何包含数字 0-9 的字符串
[a-z0-9] 匹配括号中的字符集中的任意字符
[^a-z0-9] 匹配任意不在括号中的字符集中的字符
\d 匹配数字,同[0-9]
\D 匹配非数字,同[^0-9]
\w 匹配字母和数字及_,同[a-zA-Z0-9_]
\W 匹配非字母和数字及_,同[^a-zA-Z0-9_]

空白字符

元字符 匹配情况
\0 匹配 null 字符
\f 匹配进纸字符
\n 匹配换行符
\r 匹配回车字符
\t 匹配制表符
\s 匹配空白字符、空格、制表符和换行符
\S 匹配非空白字符

锚字符

元字符 匹配情况
^ 行首匹配
$ 行尾匹配
\A 只有匹配字符串开始处
\b 匹配单词边界,词在[]内时无效
\B 匹配非单词边界
\G 匹配当前搜索的开始位置
\z 只匹配字符串结束处
\Z 匹配字符串结束处或行尾

量词

元字符 匹配情况
{x} 匹配任何包含 x 个前导字符串
{x,y} 匹配任何包含 x 到 y 个前导字符串
{x,} 匹配任何包含至少 x 个前导字符串
+ 匹配任何至少包含一个前导字符串,同{1,}
* 匹配任何包含零个或多个前导字符串,同{0,}
? 匹配任何包含零个或一个前导字符串,同{0,1}
| 匹配字符串的左边或者右边
() 包围一个字符分组或定义个反引用,可以使用\1\2 提取

PHP修饰符

语法 描述
i 忽略大小写
m 在匹配首内容或者尾内容时候采用多行识别匹配
x 忽略正则中的空白
A 强制从头开始匹配
U 禁止贪婪匹配 只跟踪到最近的一个匹配符并结束

JavaScript修饰符

语法 描述
i 忽略大小写
m 多行匹配
g 全局匹配
JavaScript禁止贪婪匹配在量词后加?,如+?,*?,{n,}?

常用正则表达式

校验数字的正则表达式

匹配内容 正则表达式
数字 ^\d*$
n位数字 ^\d{n}$
至少n位的数字 ^\d{n,}*$
m到n位的数字 ^\d{m,n}$
自然数(零和非零开头的数字) ^(0|[1-9]\d*)$

校验字符的正则表达式

匹配内容 正则表达式
汉字 ^[\u4e00-\u9fa5]*$
英文和数字 ^[A-Za-z0-9]+$
由26个英文字母组成的字符串 ^[A-Za-z]+$
由26个大写英文字母组成的字符串 ^[A-Z]+$
由26个小写英文字母组成的字符串 ^[a-z]+$
由数字和26个英文字母组成的字符串 ^[A-Za-z0-9]+$
由数字、26个英文字母或者下划线组成的字符串 ^\w+$
中文、英文、数字包括下划线 ^[\u4E00-\u9FA5A-Za-z0-9_]+$
中文、英文、数字但不包括下划线等符号 ^[\u4E00-\u9FA5A-Za-z0-9]+$

特殊需求正则表达式

匹配内容 正则表达式
邮箱 ^\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 [a-zA-z]+://[^\s]*
手机号码 ^(13|14|15|18|17)[0-9]{9}$
电话号码 ^(\(\d{3,4}-)|\d{3,4}-)?\d{7,8}$
国内电话号码 d{3}-\d{8}|\d{4}-\d{7}
身份证号 ^\d{17}[\d|x]|\d{15}$
短身份证号码(数字、字母x结尾) ^([0-9]){7,18}(x|X)?$ 或 ^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$
用户名(字母开头,允许5-16字节,允许字母数字下划线,字母开头) ^[a-zA-Z][a-zA-Z0-9_]{4,15}$
日期格式 ^\d{4}-\d{1,2}-\d{1,2}$
腾讯QQ号 ^[1-9][0-9]{4,}$
中国邮政编码 [1-9]\d{5}
IP地址 (25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)