正则表达式测试
免费在线正则表达式测试工具,支持实时匹配、结果高亮、分组信息展示,内置常用正则模板,免登录打开即用,本地运算保障数据安全。
0 次使用 0
Flags
try-catch 包裹执行,最大匹配数 10000 防止灾难性回溯
常用正则
找到 0 个匹配
匹配结果
Contact us at support@panzipool.com or admin@example.org for help.
分组信息
暂无匹配结果
正则语法速查
| 语法 | 含义 | 示例 |
|---|---|---|
| . | 匹配任意单个字符(除换行) | a.c → abc, a1c |
| * | 前一个字符出现 0 次或多次 | ab* → a, ab, abbb |
| + | 前一个字符出现 1 次或多次 | ab+ → ab, abbb |
| ? | 前一个字符出现 0 次或 1 次 | ab? → a, ab |
| {n} | 精确匹配 n 次 | a{3} → aaa |
| {n,m} | 匹配 n 到 m 次 | a{2,4} → aa, aaa, aaaa |
| [abc] | 字符集,匹配其中任意一个 | [aeiou] → 元音字母 |
| [^abc] | 否定字符集 | [^0-9] → 非数字 |
| \d / \D | 数字 / 非数字 | \d+ → 123 |
| \w / \W | 单词字符 / 非单词字符 | \w+ → hello |
| \s / \S | 空白 / 非空白 | \s+ → 空格制表符 |
| ^ / $ | 行首 / 行尾锚点 | ^hello → 以 hello 开头 |
| () | 捕获组 | (ab)+ → abab |
| (?:) | 非捕获组 | (?:ab)+ → 不捕获 ab |
| (?=) | 正向先行断言 | a(?=b) → a 后面跟 b |
| (?<=) | 正向后行断言 | (?<=a)b → b 前面是 a |
什么是 ReDoS?灾难性回溯解析
ReDoS(Regular Expression Denial of Service)是一种通过构造恶意输入使正则引擎陷入灾难性回溯的攻击方式,导致 CPU 占用率飙升甚至服务崩溃。
当正则表达式中存在重叠的量词(如 (a+)+ ),引擎在面对特定输入时会尝试所有可能的匹配路径。例如正则 ^(a+)+$ 匹配 aaaaaaaaaaaaaaaaaaaaa! 时,回溯次数呈指数级增长。
本工具内置 ReDoS 防护:最大匹配数限制为 10000 次,执行超时自动中断。在日常开发中,应避免嵌套量词、使用非贪婪匹配(.*?)替代贪婪匹配(.*)、优先使用具体字符类替代 .* 等方式预防 ReDoS。
常见问题
正则测试工具支持哪些标志位?
支持 g(全局匹配)、i(忽略大小写)、m(多行模式)、s(dotAll)、u(Unicode)五种标志位,可自由组合。
如何查看匹配分组信息?
执行匹配后,分组信息卡片会展示每个捕获组的内容和索引,方便调试复杂正则表达式。
是否有 ReDoS 防护?
工具使用 try-catch 包裹执行,最大匹配数限制为 10000,防止灾难性回溯导致浏览器卡死。
贪婪匹配和非贪婪匹配有什么区别?
贪婪匹配(如 .*)尽可能匹配更多字符,非贪婪匹配(如 .*?)尽可能匹配更少字符。例如对字符串 "a(b)c(d)e",\(.*\) 贪婪匹配整个 "(b)c(d)",而 \(.*?\) 非贪婪匹配 "(b)"。
如何匹配中文?
使用 Unicode 属性转义 \p{Han} 可匹配所有汉字,或使用 [\u4e00-\u9fa5] 匹配常用汉字。需开启 u 标志位。