正则表达式测试器

使用 Rust regex 引擎(WebAssembly)实时测试正则表达式:高亮匹配、捕获组和命名组、i/m/s 标志以及保存的模式。

输入内容和文件始终留在浏览器中

标志

输入或粘贴用于测试模式的文本,或加载示例。

匹配项

输入模式后,匹配项及其位置和捕获组将显示在这里。

匹配数

已保存的模式

暂无已保存的模式。

名称模式操作

示例

名称模式操作

保存模式

本页内容

输入正则表达式,测试文本中的每个匹配都会随输入实时高亮,下方列出位置和捕获组。模式运行在编译为 WebAssembly 的 Rust regex crate 上,因此语法和行为遵循 Rust,而不是 JavaScript。

详细功能

支持的语法包括字符类和 Unicode 类(如 \p{Cyrillic})、贪婪和惰性量词、分支、锚点、单词边界 \b、编号组、命名组 (?<name>…) 或 (?P<name>…)、非捕获组以及 (?i) 这样的内联标志。该引擎不支持先行断言、后行断言和 \1 这类反向引用——工具会显示引擎的错误信息。作为交换,匹配时间随输入线性增长,因此 (a+)+$ 这样的模式不会让页面卡死。

标志:i 忽略大小写,m 让 ^ 和 $ 匹配每一行,s 让 . 也能匹配换行;关闭 全局 时只显示第一个匹配。Rust 引擎始终启用 Unicode 模式,因此\w、\d 和 . 都会匹配非 ASCII 的字母、数字和字符。位置是 JavaScript 字符串索引(UTF-16,一个表情占 2)。列表显示前 50 个匹配,计数在 10,000 处停止。

一切都在本地运行。只有点击 保存模式 时,模式才会连同名称、标志和示例文本保存到本浏览器的 localStorage。五个内置示例(电子邮件、IPv4 地址、日期、十六进制颜色、URL)一键即可加载。

实用示例

命名组:(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2}) 作用于 Released 2026-10-06, patched 2026-11-02,得到 2 个匹配;第一个是位于 [9-19] 的 2026-10-06,year 为 2026,month 为 10,day 为 06。

忽略大小写的分支:error|warn 加 i 标志,作用于 ERROR: disk full 和 Warn: low memory 两行,匹配 ERROR 和 Warn。

行锚点:^\w+ 作用于 alpha one 和 beta two 两行时只匹配 alpha;加上 m 标志后匹配 alpha 和 beta。

不支持的先行断言:foo(?=bar) 会被拒绝,并提示 “look-around, including look-ahead and look-behind, is not supported”——改为匹配 foo(bar) 并使用捕获组。

如何使用此工具

  1. 输入模式

    在 模式 中输入表达式,不需要两侧的斜杠。速查表 列出了最常用的语法。

  2. 设置标志

    在 标志 下按需勾选 忽略大小写、多行 或 点匹配所有;取消 全局 则只显示第一个匹配。

  3. 添加测试文本

    将文本粘贴到 测试字符串——匹配会随输入实时高亮。

  4. 查看匹配

    匹配项 列表显示每个匹配的 [start-end] 位置和捕获组。

  5. 保存或复用

    点击 保存模式 保存表达式,之后可从 已保存的模式 中 加载,或从某个 示例 开始。

提示和最佳实践

  • 使用断言或 \1 的 JavaScript、PCRE 模式需要改写:把周围文本放进捕获组,或在代码中检查条件。
  • / 不需要转义,但字面量点号需要:用 \. 表示 “.”。
  • 内联标志在模式中同样有效:(?i)error 等同于勾选 i 标志的 error。
  • 保存的模式只存在于本浏览器中;清除网站数据会将其删除。
  • 在单词两侧使用 \b(\bcolou?r\b),这样 colours 就不会被当作 colour 匹配。