正则表达式测试
在线测试正则表达式匹配结果
正则表达式测试
/
/
Flags: g(全局) i(忽略大小写) m(多行) s(dotAll) u(unicode) y(sticky)
字符类
| 语法 | 说明 | 示例 | 匹配 |
|---|---|---|---|
. | 匹配除换行符外的任意单个字符 | a.c | abc、a1c、a_c |
\d | 匹配数字,等价于 [0-9] | \d{3} | 123、456 |
\D | 匹配非数字,等价于 [^0-9] | \D+ | abc、你好 |
\w | 匹配字母、数字、下划线,等价于 [a-zA-Z0-9_] | \w+ | hello、user_1 |
\W | 匹配非单词字符 | \W+ | 空格、标点 |
\s | 匹配空白字符(空格、Tab、换行等) | a\sb | a b |
\S | 匹配非空白字符 | \S+ | hello、123 |
[abc] | 字符集,匹配括号内任意一个字符 | [aeiou] | a、e、i、o、u |
[^abc] | 排除字符集,匹配不在括号内的字符 | [^0-9] | 字母、符号 |
[a-z] | 字符范围,匹配 a 到 z 之间的字符 | [a-zA-Z] | 任意英文字母 |
量词
| 语法 | 说明 | 示例 | 匹配 |
|---|---|---|---|
* | 匹配前面的元素零次或多次(贪婪) | ab*c | ac、abc、abbc |
+ | 匹配前面的元素一次或多次(贪婪) | ab+c | abc、abbc(不匹配 ac) |
? | 匹配前面的元素零次或一次 | colou?r | color、colour |
{n} | 恰好匹配 n 次 | \d{4} | 2024、1234 |
{n,} | 至少匹配 n 次 | \d{3,} | 123、12345 |
{n,m} | 匹配 n 到 m 次 | \d{2,4} | 12、123、1234 |
*? | 非贪婪匹配(尽可能少匹配) | <.+?> | 匹配最短的 HTML 标签 |
+? | 非贪婪的一次或多次 | \d+? | 尽可能少的数字 |
锚点与边界
| 语法 | 说明 | 示例 | 匹配 |
|---|---|---|---|
^ | 匹配字符串(或行)的开头;m 模式下匹配每行开头 | ^Hello | 以 Hello 开头的字符串 |
$ | 匹配字符串(或行)的结尾;m 模式下匹配每行结尾 | world$ | 以 world 结尾的字符串 |
\b | 单词边界,匹配单词与非单词字符之间的位置 | \bcat\b | cat(不匹配 catch 中的 cat) |
\B | 非单词边界 | \Bcat\B | concatenate 中间的 cat |
分组与引用
| 语法 | 说明 | 示例 | 说明 |
|---|---|---|---|
(abc) | 捕获组,将括号内内容作为整体,并记录匹配结果 | (ab)+ | 匹配 ab、abab、ababab |
(?:abc) | 非捕获组,分组但不记录匹配结果,性能更好 | (?:ab)+ | 同上,但不捕获 |
(?<name>abc) | 命名捕获组,通过名称引用捕获结果 | (?<year>\d{4}) | 捕获年份并命名为 year |
\1、\2 | 反向引用,引用第 n 个捕获组的内容 | (\w+)\s\1 | 匹配重复单词,如 "the the" |
a|b | 或运算,匹配 a 或 b | cat|dog | cat 或 dog |
预查(零宽断言)
| 语法 | 说明 | 示例 | 匹配 |
|---|---|---|---|
(?=abc) | 正向先行断言:后面必须跟着 abc(不消耗字符) | \d+(?=px) | 匹配 12px 中的 12 |
(?!abc) | 负向先行断言:后面不能跟着 abc | \d+(?!px) | 匹配不跟 px 的数字 |
(?<=abc) | 正向后行断言:前面必须是 abc(ES2018+) | (?<=\$)\d+ | 匹配 $100 中的 100 |
(?<!abc) | 负向后行断言:前面不能是 abc(ES2018+) | (?<!\$)\d+ | 匹配不跟在 $ 后的数字 |
修饰符(Flags)
| 标志 | 说明 | 示例 |
|---|---|---|
g | 全局匹配,找到所有匹配项(不加则只匹配第一个) | /\d+/g 匹配所有数字 |
i | 忽略大小写 | /hello/i 匹配 Hello、HELLO |
m | 多行模式,^ 和 $ 匹配每行的开头和结尾 | /^\d/m 匹配每行开头的数字 |
s | dotAll 模式,. 可匹配换行符(ES2018+) | /a.b/s 匹配跨行的 a 和 b |
u | Unicode 模式,正确处理 Unicode 字符(如 emoji) | /\p{L}/u 匹配任意字母 |
y | 粘性匹配(sticky),从 lastIndex 位置开始匹配 | /\d+/y |
gi | 组合使用:全局 + 忽略大小写 | /hello/gi |
转义字符
| 语法 | 说明 |
|---|---|
\.、\*、\+ | 转义特殊字符,使其作为字面量匹配(需转义的字符:. * + ? ^ $ { } [ ] | ( ) \) |
\n | 换行符 |
\t | 制表符(Tab) |
\r | 回车符 |
\uXXXX | Unicode 字符,如 \u4e2d 匹配"中" |
常用正则速查
| 场景 | 正则表达式 | 说明 |
|---|---|---|
| 非空字符串 | ^.+$ | 至少包含一个非换行字符 |
| 纯数字 | ^\d+$ | 整行全为数字 |
| 正整数 | ^[1-9]\d*$ | 不含 0 开头 |
| 浮点数 | ^-?\d+(\.\d+)?$ | 可选负号和小数部分 |
| 字母数字 | ^[a-zA-Z0-9]+$ | 仅含字母和数字 |
| 去除首尾空格 | ^\s+|\s+$ | 配合 replace 使用 |
| 重复单词 | \b(\w+)\s+\1\b | 利用反向引用检测重复 |
| 提取括号内容 | \(([^)]+)\) | 捕获组获取括号内文本 |
常用正则表达式
| 说明 | 正则表达式 | 操作 |
|---|---|---|
| 邮箱地址 | ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ |
|
| 手机号码(中国) | ^1[3-9]\d{9}$ |
|
| URL 网址 | ^https?:\/\/.+ |
|
| IPv4 地址 | ^(\d{1,3}\.){3}\d{1,3}$ |
|
| 日期(YYYY-MM-DD) | ^\d{4}-\d{2}-\d{2}$ |
|
| 身份证号(18位) | ^\d{17}[\dXx]$ |
|
| IPv6 地址 | ^([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$ |
|
| MAC 地址 | ^([0-9A-Fa-f]{2}[:-]){5}[0-9A-Fa-f]{2}$ |
|
| 时间(HH:MM:SS) | ^([01]\d|2[0-3]):[0-5]\d:[0-5]\d$ |
|
| 整数 | ^-?\d+$ |
|
| 浮点数 | ^-?\d+(\.\d+)?$ |
|
| 正整数 | ^[1-9]\d*$ |
|
| 中文字符 | [\u4e00-\u9fa5] |
|
| 用户名(字母/数字/下划线,4-16位) | ^\w{4,16}$ |
|
| 强密码(含大小写字母、数字、特殊字符,8位以上) | ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\W_]).{8,}$ |
|
| 邮政编码(中国) | ^[1-9]\d{5}$ |
|
| 座机号码(中国) | ^(\d{3,4}-?)?\d{7,8}$ |
|
| 十六进制颜色值 | ^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$ |
|
| 图片文件名 | \.(jpg|jpeg|png|gif|webp|svg)$ |
|
| 版本号(SemVer) | ^\d+\.\d+\.\d+$ |
|
| UUID / GUID | ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$ |
|
| Base64 字符串 | ^[A-Za-z0-9+/]+={0,2}$ |
|
| JWT Token | ^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$ |
|
| SQL 注入检测(常见关键词) | (\b(SELECT|INSERT|UPDATE|DELETE|DROP|UNION|EXEC)\b) |
|
| 空行 | ^\s*$ |
|
| 连续重复单词 | \b(\w+)\s+\1\b |
关于正则表达式测试
- 在线测试正则表达式匹配效果,支持实时高亮显示所有匹配项及捕获组详情
- 内置 25+ 常用正则模式(邮箱、手机号、URL、身份证、UUID 等),一键填入即可使用
- 使用 JavaScript 正则引擎,支持 g、i、m、s、u、y 等全部修饰符
操作说明
- 在「正则表达式」输入框中输入正则,在 flags 框中填写修饰符(默认 g 全局匹配)
- 在「测试文本」区域粘贴待匹配内容,点击「测试匹配」查看结果
- 点击「常用正则表达式」表格中的「测试」按钮,可自动填入正则和示例文本并跳转到顶部
- 点击「加载示例」可快速体验工具效果;点击「清空」重置所有输入
注意事项
- 正则使用 JavaScript 引擎,与 Java、Python、.NET 等语言的语法略有差异(如后行断言需 ES2018+)
- 复杂的回溯正则在大文本上可能导致浏览器卡顿,建议先用小文本验证
- 所有处理均在浏览器本地完成,不会上传任何数据