正则表达式在线测试

面向 JavaScript 的正则表达式测试工具:在输入时实时高亮显示匹配、捕获组和标志。

你的模式和测试字符串在浏览器中本地评估,不会上传到任何服务器。

由 Udit Agarwal 开发和维护

Regular Expressions (Regex), Explained

想比较两段字符串?试试文本对比工具。

关于 正则测试工具

这款正则表达式测试工具让你实时构建和调试 JavaScript 正则表达式,每个匹配都会在你输入的那一刻在示例文本中高亮显示。作为在线正则测试器,它会显示捕获组、命名组以及每个匹配的起始索引,让你清楚地看到模式捕获到了什么。切换 i、m、s 和 u 标志,可在不同条件下测试正则表达式而无需重写;匹配始终是全局的,所以每个匹配都会列出。它使用与你浏览器自带相同的 RegExp 引擎,因此结果与你的 JavaScript 代码在运行时的实际行为一致。适用于编写校验逻辑的开发者、检查解析规则的 QA 工程师,以及任何正在学习正则的人。所有处理都在你的浏览器本地完成,因此你的模式和测试数据不会离开你的设备。

功能特性

  • 在你输入模式时实时高亮测试字符串中的每个匹配
  • 为每个匹配显示编号的捕获组和命名组
  • 按顺序编号,报告每个匹配的起始索引
  • 可单独切换 i、m、s 和 u 标志;匹配始终是全局的
  • 使用浏览器原生 JavaScript RegExp 引擎以获得准确结果
  • 暴露模式语法错误,让你快速修复无效表达式
  • 完全在你的浏览器中处理模式和测试文本

如何使用 正则测试工具

  1. 在模式字段中输入或粘贴你的正则表达式。
  2. 在模式旁边切换你需要的标志(i、m、s、u)。
  3. 将示例文本粘贴到测试字符串框中。
  4. 在结果面板中查看高亮的匹配、捕获组和位置。

示例

输入

Pattern: (\w+)@(\w+)\.com  Flags: g
Text: contact alice@example.com or bob@test.com

输出

Match 1: alice@example.com  group1=alice  group2=example
Match 2: bob@test.com  group1=bob  group2=test

从两个邮箱地址中各提取出带捕获组的两个匹配。

常见错误与故障排除

  • 关闭 g 标志后仍然列出所有匹配。 — 测试器始终进行全局搜索,方便你看到每个匹配。在你自己的代码中,没有 g 的正则用 exec() 或 match() 时会在第一个匹配处停止,需要全部匹配时请在代码里加上 g。
  • 区分大小写的模式漏掉了像 'Error' 与 'error' 这样的词。 — 打开 i(忽略大小写)标志,让模式不分字母大小写地匹配。
  • 点号(.)在多行文本中无法匹配换行符。 — 启用 s(dotall)标志,让 . 也能匹配换行。
  • ^ 和 $ 只锚定整个字符串,而非每一行。 — 启用 m(多行)标志,以锚定每一行的开头和结尾。
  • 命名组或 Unicode 属性转义(\p{...})抛出错误。 — 启用 u(unicode)标志,\p{...} 转义和严格的 Unicode 处理都需要它。
  • 模式字段显示语法错误。 — 检查是否有不匹配的方括号或圆括号,并用反斜杠转义像 . 或 ( 这样的字面特殊字符。

常见问题

什么是正则表达式测试工具?
正则表达式测试工具会将正则表达式应用到示例文本上,并实时显示它匹配到的内容。ArrayKit 的正则测试工具会高亮每个匹配、列出捕获组并报告每个匹配的位置,让你可视化地调试模式。
正则测试工具使用哪种正则风格?
JavaScript——它使用与你浏览器运行相同的 RegExp 引擎,因此匹配结果完全反映你的 JS 代码的行为。
如何在正则测试工具中测试捕获组?
用圆括号包裹模式的某些部分,然后对文本运行。每个匹配都会列出其编号捕获组和任何命名组,以及匹配开始的索引。
正则测试工具中可以切换哪些标志?
你可以独立开关 i(忽略大小写)、m(多行)、s(dotall)和 u(unicode),以在不同条件下测试正则表达式。界面上也有 g(全局)按钮,但匹配始终是全局的,所以无论开关与否都会列出所有匹配。
正则测试工具能处理多行文本吗?
可以。粘贴多行输入并启用 m 标志以让 ^ 和 $ 按行锚定,或启用 s 标志让 . 跨越换行。
我的模式和测试数据会被发送到任何地方吗?
不会。正则测试工具在你的浏览器中本地评估一切,因此你的模式和示例文本不会离开你的设备,也不会上传到任何服务器。

相关工具

更多代码格式化工具

查看全部代码格式化工具 (32) · 全部工具