* 您的内容不会传输到服务器,所有计算均在浏览器中直接完成
输入正则表达式开始使用

什么是正则表达式测试器?

正则表达式测试器是一个交互式工具,可让您实时构建和测试正则表达式模式。

输入时,匹配的内容会在测试文本中直接高亮显示,详细的匹配列表会显示每个匹配的位置、捕获组和长度。

此工具完全在浏览器中运行——任何数据都不会发送到服务器。

主要功能

  • 实时匹配高亮 — 在测试文本中以交替颜色直观显示匹配结果。
  • 捕获组检查 — 查看每个匹配的命名和编号捕获组。
  • 替换预览 — 测试基于正则的查找和替换,支持 $1、$& 和 '$<name>' 替换标记。
  • 模式解析 — 对正则表达式进行逐词分解,显示每个部分的含义(例如 \d+ → "一个或多个数字")。
  • 灾难性回溯保护 — 匹配在后台线程中运行并设置超时,避免不良模式导致页面冻结。
  • 预设库 — 快速使用常用模式,包括邮箱、URL、IP、电话、密码等。

常见用例

  • 学习正则 — 查看每个标记如何参与匹配,并通过示例文本验证您的理解。
  • 调试 — 粘贴现有正则表达式并对实际数据进行测试,验证其匹配是否符合预期。
  • 数据提取 — 使用捕获组从日志文件、CSV 或结构化文本中提取特定部分。
  • 查找替换 — 在代码中应用之前预览复杂的文本转换。
  • 验证 — 针对边界情况测试邮箱、电话、URL 等验证模式。

速查表

符号含义示例
字符类
\d任意数字 (0-9)123 → matches 1,2,3
\w任意单词字符 (a-z, A-Z, 0-9, _)a1_ → matches a,1,_
\s任意空白字符(空格、制表符、换行)"a b" → space match
[...]自定义字符类[aeiou] → vowels
[^...]否定字符类[^0-9] → non-digits
锚点和边界
^字符串开头"^hello" → at start
$字符串结尾"end$" → at end
\b单词边界"\bword\b" → word
\B非单词边界"\Bing\B" → inside
量词
*零个或多个a* → "", a, aa, aaa
+一个或多个a+ → a, aa, aaa
?零个或一个a? → "", a
{n}恰好 n 个a{3} → aaa
{n,}至少 n 个a{2,} → aa, aaa
{n,m}n 到 m 个a{2,4} → aa, aaa, aaaa
*?, +?, ??懒惰模式(尽可能少匹配)"<.*?>" → shortest match
分组和环视
(...)捕获组(abc)+ → capture abc
(?:...)非捕获组(?:abc)+ → group w/o capture
(?<name>...)命名捕获组"(?<year>\d{4})"
(?=...)正向前瞻q(?=u) → q followed by u
(?!...)负向前瞻q(?!u) → q not followed by u
(?<=...)正向后顾"(?<=@)\w+"
(?<!...)负向后顾"(?<!@)\w+"
转义
\n换行符"line\n" → newline
\t制表符"col\t" → tab
\\字面量反斜杠"c:\\path"
\.字面量点号"end\." → literal dot
\/字面量斜杠"path\/to\/file"

局限性

  • 仅限 JavaScript 正则 — 此工具使用浏览器内置的正则引擎。PCRE、Python 等正则风格的匹配行为可能有所不同。
  • 旧浏览器不支持后顾 — 后顾断言 (?<=...) 需要 ES2018+。Safari 在 2023 年才添加支持。
  • 匹配上限 1,000 — 为保持 UI 响应性,仅渲染前 1,000 个匹配结果。
  • 捕获组不在文本中高亮 — 捕获组显示在匹配列表中,而非内联高亮。