正则
约 725 字大约 2 分钟
2025-06-22
基础规则
| 规则 | 含义 | 示例 |
|---|---|---|
a | 匹配字符 “a” | /a/.test("cat") ✅ |
\ | 转义符 | /\./ 匹配点号 “.” |
. | 匹配除换行符以外的任意字符 | /a.b/ 匹配 "acb" 但不匹配 "a\nb" |
| ` | ` | 或(选择) |
方括号
方括号匹配符合方括号内规则的一个字符
| 规则 | 含义 | 示例 |
|---|---|---|
[abc] | 匹配 a、b 或 c | /[abc]/ |
[^abc] | 匹配非 a、b、c 的任意字符 | /[^abc]/ |
[a-z] | 匹配 a 到 z | /[a-z]/ |
[A-Za-z0-9_] | 匹配字母数字下划线 | |
\d | 数字,等价于 [0-9] | |
\D | 非数字,等价于 [^0-9] | |
\w | 单词字符 [A-Za-z0-9_] | |
\W | 非单词字符 | |
\s | 空白字符(空格、制表符、换行符) | |
\S | 非空白字符 | |
\p{Property} | Unicode 属性匹配 ✅ | /\p{Script=Han}/u 匹配中文 |
\P{Property} | 非某 Unicode 属性 |
元字符
具有特殊含义的字符
| 符号 | 含义 | 示例 |
|---|---|---|
^ | 匹配输入的开头(或在 m 模式下匹配每行开头) | /^foo/ |
$ | 匹配输入的结尾(或在 m 模式下匹配每行结尾) | /bar$/ |
\b | 单词边界(字母数字与非字母数字之间) | /\bcat\b/ 匹配独立的 “cat” |
\B | 非单词边界 | /\Bcat\B/ 不匹配独立单词 |
(?=X) | 正向先行断言(匹配后面是 X 的位置) | /\d(?=px)/ 匹配数字后面跟 px |
(?!X) | 负向先行断言(匹配后面不是 X 的位置) | /\d(?!px)/ |
(?<=X) | 正向后行断言(匹配前面是 X 的位置)✅ | /(?<=\$)\d+/ 匹配 $ 后的数字 |
(?<!X) | 负向后行断言(匹配前面不是 X 的位置)✅ | /(?<!\$)\d+/ |
量词
| 量词 | 含义 | 示例 |
|---|---|---|
* | 0 次或多次 | /a*/ 匹配 "", "a", "aaa" |
+ | 1 次或多次 | /a+/ 匹配 "a", "aaa" |
? | 0 次或 1 次(可选) | /a?/ 匹配 "" 或 "a" |
{n} | 恰好 n 次 | /a{3}/ 匹配 "aaa" |
{n,} | 至少 n 次 | /a{2,}/ 匹配 "aa", "aaaa" |
{n,m} | n 到 m 次之间 | /a{2,4}/ 匹配 "aa", "aaa", "aaaa" |
分组
| 规则 | 含义 | 示例 |
|---|---|---|
(abc) | 捕获分组(会记住内容) | /(ab)+/ |
(?:abc) | 非捕获分组(不记忆) | /(?:ab)+/ |
(?<name>abc) | 命名分组 ✅ | /(?<tag>\w+)/ |
\1, \2, ... | 反向引用(根据前面捕获的顺序) | /(\w)\1/ 匹配重复字符 |
\k<name> | 命名分组引用 ✅ | /(?<a>\d)\k<a>/ 匹配重复数字 |
修饰符
| 修饰符 | 名称 | 作用 |
|---|---|---|
g | global | 全局匹配(匹配多个) |
i | ignoreCase | 忽略大小写 |
m | multiline | ^ $ 匹配多行 |
s | dotAll | 让 . 匹配换行符 |
u | unicode | 开启 Unicode 模式(支持 \p{}、正确识别代理对) |
y | sticky | 粘连模式,从 lastIndex 开始匹配 |
d | hasIndices ✅ (ES2022) | 让匹配结果包含每组的起止索引 |
转义字符
| 转义序列 | 含义 |
|---|---|
\n | 换行符 |
\r | 回车符 |
\t | 制表符 |
\v | 垂直制表符 |
\f | 换页符 |
\0 | 空字符 |
\xNN | 16进制字符 |
\uNNNN | Unicode 字符 |
\cX | 控制字符(如 \cM) |
贡献者
版权所有
版权归属:wynnsimon
