正则表达式测试
实时测试正则表达式,匹配结果即时高亮。
//g
正则测试简介
正则表达式(regex)是用于匹配、提取与替换文本的紧凑模式语言。它在 1950 年代由数学家 Stephen Kleene 形式化,如今几乎每种编程语言和编辑器都内置了它。本测试器使用 JavaScript RegExp 引擎 —— 浏览器、Node.js、Bun 用的是同一个引擎。
工具会在你每次按键后即时重新匹配:测试字符串里的命中片段会被高亮,每个匹配项及其位置和捕获组会以表格形式列出。常用标志位都可切换:g(全局)返回所有匹配;i(忽略大小写);m(多行)让 ^ 和 $ 匹配行首行尾;s(dotAll)让 . 匹配换行;u(unicode)启用完整的 Unicode 属性支持。
使用场景
- 在表单校验上线前,先验证邮箱、电话、ID 等格式。
- 从日志中批量提取 URL、日期或数字。
- 调试匹配不上的正则 —— 实时高亮帮助你定位问题。
- 在写到代码里之前先验证替换规则。
- 测试反向引用、前后断言、命名捕获组等高级特性。
最佳实践
- 整串校验时用 ^ 与 $ 锚定,避免部分匹配。
- 在分隔符之间匹配内容用非贪婪量词 (.*?)。
- 使用命名捕获组 (?<name>...) 让代码更可读。
- 字面量特殊字符 . * + ? ^ $ { } ( ) | [ ] \ 都需要反斜杠转义。
参考速查
| 符号 | 含义 |
|---|---|
| . | 任意单个字符(不含换行,s 标志除外) |
| \d / \D | 数字 / 非数字 |
| \w / \W | 单词字符(字母数字下划线)/ 非单词字符 |
| \s / \S | 空白 / 非空白 |
| ^ / $ | 字符串起始 / 结束(带 m 标志为行首尾) |
| \b / \B | 单词边界 / 非边界 |
| * | 出现 0 次或多次(贪婪) |
| + | 出现 1 次或多次(贪婪) |
| ? | 出现 0 或 1 次;放在量词后变非贪婪 |
| {n,m} | 出现 n 到 m 次 |
| (...) | 捕获组 |
| (?:...) | 非捕获组 |
| (?<name>...) | 命名捕获组 |
| (?=...) / (?!...) | 前向肯定 / 否定断言 |
| (?<=...) / (?<!...) | 后向肯定 / 否定断言 |
常见问题
本工具用的是哪种正则方言?
JavaScript RegExp 引擎。现代浏览器支持后向断言、命名捕获等特性。
为什么我的正则只匹配到一个?
没有 g(全局)标志时只会返回第一个匹配。开启 g 才能返回全部。
怎么跨换行匹配?
用 s 标志(dotAll)让 . 也能匹配换行,或者显式用 \s。
可以用后向断言吗?
可以。V8(Chrome、Node.js)从 2018 年起支持,主流浏览器都已具备。