{ }
EN

正则表达式测试

实时测试正则表达式,匹配结果即时高亮。

//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 年起支持,主流浏览器都已具备。