JavaScript 正则表达式测试器
输入原始 JavaScript 表达式和示例文本,选择标志,然后主动开始测试。无需上传文本即可查看当前匹配项和捕获值。
输入
表达式最多 2,048 个 UTF-16 代码单元;文本最多 100,000 个。结果和报告也有大小限制。
工具在浏览器工作线程中处理表达式和文本,不会增加上传、输入历史记录或含输入内容的 URL。只有在您选择时才会复制或下载;报告包含完整的表达式和文本。
三步测试表达式
- 输入表达式,不要添加两侧斜杠或末尾标志字符串,然后输入测试文本。允许空表达式和空文本。
- 选择标志。默认启用所有匹配项和 Unicode 模式;只需要第一个匹配项时,关闭所有匹配项。
- 选择“测试表达式”,查看匹配项、位置和捕获组。也可以复制或下载包含完整输入的当前完整报告。
准确理解匹配项和捕获组
完整匹配是整个表达式匹配到的文本。括号也可以捕获值;未参与匹配的组与匹配到空字符串的组不同。
起始位置从零计数,结束位置不包含在内。位置使用 JavaScript 的 UTF-16 代码单元,因此即使启用 Unicode 模式,一个表情符号也可能占两个位置。
多行模式会改变行锚点的行为;点号匹配换行符会改变点号的行为。Unicode 模式会改变解析方式以及空匹配后的前进方式,但不会让常用的单词字符简写涵盖所有语言的字母。
值以带引号的 JSON 字符串形式显示,以便区分空值、不可见字符和代理项字符。导出的报告使用 ASCII 转义,并保留接受的表达式和文本。
值得尝试的示例
表达式为 (\d+)、文本为 Order 42, item 7 时,所有匹配项返回 [6,8) 处的 42 和 [15,16) 处的 7,每个数字也都在捕获组 1 中。仅第一个匹配项返回 42。
对一个表情符号使用空表达式,并启用所有匹配项和 Unicode 模式,会在位置 0 和 2 返回空匹配。关闭 Unicode 模式后,位置 1 也会有一个空匹配。
对空文本使用表达式 (a)?() 时,完整匹配为空。捕获组 1 未参与匹配,捕获组 2 则参与了匹配且包含空字符串。
范围和限制
本工具使用浏览器的 JavaScript 正则表达式引擎,支持 g、i、m、s 和 u 标志。不提供 PCRE、Python、替换或捕获组位置,也不保证不同引擎和版本的行为完全相同。
表达式最多 2,048 个 UTF-16 代码单元,文本最多 100,000 个。完整结果最多包含 500 个匹配项,每个返回的匹配项最多有 256 个编号捕获组和 256 个命名捕获组,报告上限为 1 MiB。超过限制时不会生成部分报告。
独立工作线程的名义操作时限为两秒,包括启动和生成报告。浏览器调度可能延迟取消,超时也不能证明表达式无效或不安全。
这是文本检查辅助工具,不能证明正则表达式对所有输入都安全、快速、可靠或正确。仅第一个匹配项模式只报告请求的首个结果,不表示完整的非零总数。
本地处理
工具在浏览器工作线程中处理表达式和文本,不会增加上传、输入历史记录或含输入内容的 URL。只有在您选择时才会复制或下载;报告包含完整的表达式和文本。
