Skip to content

正则表达式 Regular Expressions

匹配

符号解释
\小写字母类型
\大写字母除了、非

匹配类型

符号解释
\d数字digit
\D非数字
\w数字、字母word
\W非数字、字母
\s空格space
\S非空格
符号解释
.任意字符
i忽略大小写ignore
g全局匹配global
bash
/c.t/   # 匹配 cat、cot
/\d\d/  # 匹配 23、99
/\W+/   # 匹配 !@#、$%^

匹配数量

符号解释
*0 次或多次
+1 次或多次
?0 次或 1 次
{n}n 次
{n,m}至少 n 次、至多 m 次
{n,}至少 n 次
bash
/ab*/       # 匹配 a、ab、abb
/ab+/       # 匹配 ab、abb
/\d{3}/     # 匹配 123

匹配位置

符号解释
^以什么开头
$以什么结尾
\b匹配单词边界
\B匹配非单词边界
bash
/^abc/      # 匹配 abc123 ✅,1abc ❌
/\ber\b/    # 匹配 water ❌,er ✅

分组与集合

符号解释
()将多个字符或表达式作为一个整体
[]匹配该集合中的任意一个字符
[^]排除字符集
bash
/(abc)+/    # 匹配 abc、abcabc
/[abc]/     # 匹配 a、b、c
/[^abc]/    # 匹配 d、e(非 a、b、c)
/red|blue/  # 匹配 red、blue

逻辑运算

bash
| 符号 | 解释         | 示例 |
| --- | ---------- | ---------------- |
|  | `|`        | `/hello|world/` |
|  | 拼接多个条件 | `/\d{3}\s\w/`  |
|  | 零宽度断言  | `/(?<!\d)\w/`   |

零宽度断言

符号名称解释
(?=...)正向先行断言匹配内容的后面挨着什么
(?!...)负向先行断言匹配内容的后面不挨着什么
(?<=...)正向后行断言匹配内容的前面挨着什么
(?<!...)负向后行断言匹配内容的前面不挨着什么
bash
/hello|world/   # 匹配 hello 或 world
/\d{3}\s\w/     # 匹配 3 个数字 + 一个空格 + 一个单词
/(?<!\d)\w/     # 匹配单词前面不是数字

/(\d(?=[a-z]))/ # 数字后面挨着字母
/\d(?![a-z])/   # 数字后面不挨着字母
/(?<=[a-z])\d/  # 数字前面挨着字母
/(?<![a-z])\d/  # 数字前面不挨着字母

Released under the MIT License.