Glob 转 Regex 转换器
在你的浏览器中将 glob 模式转换为 JavaScript 正则表达式,并针对真实路径进行测试。你的模式留在你的设备上。
你的 glob 模式和测试用的示例路径都在你的浏览器本地转换,绝不会上传。
需要调试结果?打开 Regex 测试器。
关于 Glob 转 Regex
这款 glob 转 regex 转换器会把一个 shell 风格的通配符模式转换为等价的 JavaScript 正则表达式,可直接放进代码中。输入一个 glob,例如 *.js、**/*.ts、src/** 或 file-{a,b}.txt,工具就会构建出 regex 源码及标志,并对点号和括号等字面字符进行转义,使其精确匹配。你可以切换 globstar 让 ** 跨越路径分隔符、为 {a,b,c} 启用花括号展开的择一匹配、用 ^ 和 $ 进行全字符串锚定,以及一个忽略大小写的标志。一个实时测试器会用你的 regex 去匹配一组示例路径,将每个匹配标为绿色、每个未匹配标为红色,还有一个图例解释每个被翻译的标记。一切都在你的浏览器中运行,因此你输入的模式和路径留在你的设备上。
功能特性
- 将 *、?、**(globstar)、字符类和 {a,b} 花括号翻译为 regex 语法
- globstar 开关控制 ** 与 * 是否跨越 / 路径分隔符
- 取反类 [!abc] 变为 [^abc],像 [0-9] 这样的范围被保留
- 转义在 glob 中是字面、在 regex 中是元字符的字符,使 . + ( ) 精确匹配
- 可选的 ^…$ 锚定用于全字符串匹配,以及一个忽略大小写的 i 标志
- 实时测试器检查一组示例路径,将每个匹配标为绿色或红色
- 标记图例解释 glob 的每个部分在 regex 中变成了什么
- 一键将 regex 复制为 /pattern/flags 字面量
如何使用 Glob 转 Regex
- 在模式框中输入或粘贴一个 glob 模式,例如 **/*.ts。
- 开启或关闭 globstar、锚定、花括号展开和忽略大小写。
- 查看生成的 regex 源码与标志,并审阅标记图例。
- 在测试器中每行输入一个示例路径,看看哪些匹配。
- 点击「复制 regex」获取可用于代码的 /pattern/flags 字面量。
示例
输入
src/**/*.{ts,tsx}
输出
/^src/(?:.*/)?[^/]*\.(?:ts|tsx)$/
globstar 让 src/**/ 跨越嵌套文件夹,而 *.{ts,tsx} 停留在叶子层级。
常见错误与故障排除
- *.js 意外匹配了像 src/app.js 这样的嵌套路径。 — 保持 globstar 开启,使单个 * 在 / 分隔符处停止;当你需要嵌套文件时请使用 **/*.js。
- 像 file.txt 这样的模式匹配了 filextxt 或 fileXtxt。 — 那是原始 regex 才会发生的情况;本转换器已将点号转义为 \.,因此它只匹配字面的句点。
- 路径看起来没错,但 regex 始终不匹配。 — 锚定会把模式包裹在 ^…$ 中,因此整个字符串都必须匹配。关闭锚定以进行子串匹配。
- {a,b} 在输出中按字面显示,而没有变成择一匹配。 — 请启用花括号展开;关闭时,花括号被当作字面字符处理。
常见问题
- glob 模式中的 ** 是什么意思?
- ** 是 globstar。开启 globstar 选项时它会跨越路径分隔符匹配,因此 src/**/*.ts 能到达任意嵌套文件夹中的文件,而单个 * 会在下一个 / 处停止。
- glob 的字符类如何转换为 regex?
- [abc] 直接映射为 regex 字符类,像 [0-9] 这样的范围保持原样,而写作 [!abc] 的取反 glob 类会被转换为 [^abc],使其匹配任何未列出的字符。
- 转换器为什么要转义点号和其他字符?
- . + ( ) | 等字符在 glob 中是字面的,但在 regex 中是特殊的。工具会把它们转义为 \. \+ 等,使生成的 regex 精确匹配这些字符,而不是把它们当作运算符。
- 它支持像 {a,b,c} 这样的花括号展开吗?
- 支持。启用花括号展开后,file-{a,b}.txt 会变成匹配 file-a.txt 或 file-b.txt 的择一匹配,你甚至可以在花括号内嵌套 glob,例如 {*.js,*.ts}。
- 我能匹配子串而不是整个路径吗?
- 关闭全字符串锚定即可。锚定的模式被包裹在 ^…$ 中,因此整个字符串都必须匹配;不锚定时,regex 可以在更长字符串的任意位置匹配。
- 我的 glob 模式会被发送到服务器吗?
- 不会。glob 转 regex 的转换和实时测试器都完全在你的浏览器中运行,因此你输入的模式和示例路径都在本地处理,留在你的设备上。
相关工具
全部 ArrayKit 工具