正则表达式测试器
测试 JavaScript 正则表达式,支持实时高亮、捕获组和通俗易懂的说明。
代码示例
可直接复制到你自己的项目中。每个示例只使用该语言的标准库,因此无需安装任何东西。
const text = 'Hello, wereld!'
for (const [word] of text.matchAll(/\b\w+\b/g)) {
console.log(word)
}它能做什么
用你的文本测试正则表达式,高亮显示每个匹配,并列出它的捕获组。模式在带时间限制的独立 worker 中运行,所以回溯严重的模式不会让页面卡死。你输入的任何内容都不会离开你的浏览器。
如何使用
- 输入你的模式,不带两侧的斜杠。
- 选择标志:
g(所有匹配)、i(忽略大小写)、m(多行)、s(点号匹配换行符)、u(Unicode)和y(粘性)。 - 粘贴要搜索的文本。匹配会在你输入时高亮,捕获组会出现在列表中。
- 选中一个匹配,查看它的位置和每个组的值。
- 打开说明旁边的“快速参考”标签,可以查找某个标记并插入到光标位置。
示例
用 \b\w+\b 找出一句话中的单词:
Hello, world! → Hello, world
用 (?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2}) 通过命名组捕获日期:
2026-10-09 → year 2026, month 10, day 09
须知
- JavaScript、PCRE2、Rust 和 Go 在各自的引擎上运行;后三者是在你选择时才加载的 WebAssembly 模块。
- Python、Java、.NET、POSIX ERE 和 POSIX BRE 是模拟的:会先检查模式中是否有该风格不支持的语法,再改写并在 PCRE2 上运行。罕见的边界情况可能与真实行为不同,POSIX 的分支会选最长的匹配,而模拟则选第一个匹配的分支。
- 后行断言(
(?<=…))和命名组在现代浏览器中可用。 - 如果模式超时,请简化嵌套的量词,例如
(a+)+。
什么是正则表达式?
正则表达式(regex)是一种用于查找文本的紧凑模式:它描述要找什么,而不是具体的字词。开发者用它来搜索、校验和提取数据。此测试器在各自的引擎上运行 JavaScript、PCRE2、Rust 和 Go 的模式,并在 PCRE2 上模拟 Python、Java、.NET 和 POSIX,所以把模式复制到别处之前,请先确认风格。
常见问题
这些标志有什么作用?
g 查找所有匹配而不是只找第一个,i 忽略大小写,m 让 ^ 和 $ 匹配每一行,s 让点号匹配换行符,u 启用完整的 Unicode 支持。
为什么我的模式因超时而停止?
某些模式在特定文本上可能耗费指数级的时间(灾难性回溯)。测试器会在两秒后停止它们,这样你的页面就不会卡死。
我的文本会被发送到别处吗?
不会。模式和文本都在你的浏览器中处理,不会上传任何内容。