基础元字符
| 语法 | 说明 | 示例 | 操作 |
|---|---|---|---|
. |
匹配除换行符以外的任意单个字符 | a.c 匹配 abc、adc |
|
^ |
匹配字符串的开头位置 | ^abc 匹配以abc开头的字符串 |
|
$ |
匹配字符串的结尾位置 | abc$ 匹配以abc结尾的字符串 |
|
\d |
匹配任意数字,等价于 [0-9] | \d{3} 匹配3位连续数字 |
|
\D |
匹配任意非数字字符 | \D+ 匹配连续的非数字 |
|
\w |
匹配字母、数字、下划线,等价于 [a-zA-Z0-9_] | \w+ 匹配连续的单词字符 |
|
\W |
匹配非单词字符 | \W 匹配空格、符号等 |
|
\s |
匹配任意空白字符(空格、制表符、换行符等) | a\sb 匹配 a 和 b 之间的空白 |
|
\S |
匹配任意非空白字符 | \S+ 匹配连续的非空白字符 |
|
\b |
匹配单词边界位置 | \bword\b 精确匹配单词word |
量词限定符
| 语法 | 说明 | 示例 | 操作 |
|---|---|---|---|
* |
重复0次或多次,贪婪匹配 | ab* 匹配 a、ab、abb |
|
+ |
重复1次或多次,贪婪匹配 | ab+ 匹配 ab、abb,不匹配a |
|
? |
重复0次或1次,可选匹配 | ab? 匹配 a、ab |
|
{n} |
精确重复n次 | \d{6} 匹配6位数字 |
|
{n,} |
重复至少n次 | \d{2,} 匹配至少2位数字 |
|
{n,m} |
重复n到m次 | \d{3,5} 匹配3到5位数字 |
|
*? |
非贪婪匹配0次或多次,尽可能少匹配 | a.*?b 最短匹配a到b |
|
+? |
非贪婪匹配1次或多次,尽可能少匹配 | a.+?b 最短匹配a到b |
字符类与范围
| 语法 | 说明 | 示例 | 操作 |
|---|---|---|---|
[abc] |
匹配括号内任意一个字符 | [aeiou] 匹配任意元音字母 |
|
[^abc] |
匹配除括号内以外的任意字符 | [^0-9] 匹配非数字字符 |
|
[a-z] |
匹配a到z之间任意小写字母 | [a-z]+ 匹配连续小写字母 |
|
[A-Z] |
匹配A到Z之间任意大写字母 | [A-Z]+ 匹配连续大写字母 |
|
[0-9] |
匹配0到9之间任意数字 | [0-9]+ 匹配连续数字 |
|
[a-zA-Z0-9] |
匹配大小写字母和数字 | [a-zA-Z0-9]+ 匹配字母数字组合 |
分组与反向引用
| 语法 | 说明 | 示例 | 操作 |
|---|---|---|---|
(abc) |
捕获分组,匹配并保存匹配内容 | (\d{4})-(\d{2}) 捕获年和月 |
|
(?:abc) |
非捕获分组,只匹配不保存内容 | (?:ab)+ 匹配重复的ab |
|
(? |
命名捕获分组,按名称引用 | (? 命名年份分组 |
|
\1 |
反向引用第1个捕获分组的内容 | (\w)\1 匹配连续两个相同字符 |
|
a|b |
或运算符,匹配a或者b | cat|dog 匹配cat或dog |
零宽断言
| 语法 | 说明 | 示例 | 操作 |
|---|---|---|---|
(?=abc) |
正向先行断言,后面紧跟abc | a(?=b) 匹配后面是b的a |
|
(?!abc) |
负向先行断言,后面不跟abc | a(?!b) 匹配后面不是b的a |
|
(?<=abc) |
正向后行断言,前面紧跟abc | (?<=a)b 匹配前面是a的b |
|
(? |
负向后行断言,前面不跟abc | (? 匹配前面不是a的b |
修饰符标志
| 语法 | 说明 | 示例 | 操作 |
|---|---|---|---|
g |
全局匹配,查找所有匹配项 | /abc/g 全局匹配abc |
|
i |
忽略大小写匹配 | /abc/i 匹配ABC、abc等 |
|
m |
多行模式,^和$匹配每行首尾 | /^abc/m 匹配每行开头的abc |
|
s |
单行模式,. 可以匹配换行符 | /a.b/s 跨行匹配a和b |
常用正则表达式示例
| 用途 | 正则表达式 | 操作 |
|---|---|---|
| 中国大陆手机号 | ^1[3-9]\d{9}$ |
|
| 电子邮箱地址 | ^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$ |
|
| 18位身份证号 | ^\d{17}[\dXx]$ |
|
| 网址URL(http/https) | ^https?:\/\/[\w\-]+(\.[\w\-]+)+[/#?]?.*$ |
|
| 纯中文字符 | ^[\u4e00-\u9fa5]*$ |
|
| 正整数 | ^[1-9]\d*$ |
|
| 正浮点数 | ^\d+\.\d+$ |
|
| 6位邮政编码 | ^\d{6}$ |