路径与通配符

Glob 模式测试核对真实库的匹配结果

输入一个 Glob 模式和每行一条的候选路径,在下方选择库与匹配参数。

Glob 模式测试

候选路径

模式和路径仅在当前浏览器内处理,不读取或修改文件。

逐行匹配结果

请输入一个模式和至少一条候选路径。

匹配参数

Windows 模式把模式和路径中的 \ 转为 /;需要用 \ 转义时请选择 POSIX。大小写由独立选项控制。

一次测试一个模式。跳过空路径行,保留空格和重复项;! 与 # 使用所选库的原生语义。

上限:模式 256、路径 200 条、每条 512、合计 131,072 个 UTF-16 代码单元;minimatch 展开 1,000 项;后台运行 2 秒。

结果已过期或正在计算。

构建任务多收了一批文件,或者监听器漏掉了子目录,问题未必出在星号数量上。Glob 模式测试让你保留同一组候选路径,只切换匹配库或一个参数,再观察哪些行改变了结果,方便定位配置与预期之间的差异。

把这个 Glob 通配符测试工作台当作配置实验台:同时放入应该命中和不该命中的路径。Glob 模式匹配没有适用于所有库的统一方言;先确认项目使用的是 minimatch 还是 picomatch,再核对点文件、大小写和目录层级。

为什么使用 Glob 模式测试

看清是否跨过目录层级

Glob 模式测试保留每条路径的原始行号。把 src/*.ts 改成 src/**/*.ts 后,直属文件和嵌套文件的结果可以直接对照,不需要先改动项目配置,也不需要猜测漏匹配的文件处于哪一层目录。

左侧只选中直属文件,右侧递归选择同时覆盖嵌套目录中的文件。

单独验证隐藏文件的开关

示例把普通源文件和点开头的文件放在一起。开启包含隐藏文件后,普通文件保持原来的匹配状态,隐藏文件则可能新增命中;忽略大小写是另一项参数,不会跟随这个开关一起改变。

同一份文件列表在隐藏文件开关前后的对比,只有带点标记的文件新增匹配。

让测试参数与项目配置对应

01

先确定实际依赖

选择器提供 minimatch 10.2.6 和 picomatch 4.0.7。先查看项目的依赖及调用参数,再决定使用哪一个;同一段扩展语法在两种库中可能有不同含义。

  • 前导 ! 和 # 交给所选库处理,不套用 Git 忽略规则。
02

区分分隔符与大小写

POSIX 模式保留反斜杠转义。Windows 分隔符模式会先把模式与路径中的反斜杠转为 /,报告同时保存原始路径和实际测试值。

  • Windows 分隔符模式不会自动开启忽略大小写。
03

导出前等结果更新

默认停顿 350 毫秒后自动测试。关闭自动开关后,使用按钮或 Ctrl/Cmd + Enter 执行;输入或选项一变,旧结果立即失效,复制和下载会暂时禁用。

  • 界面先展示 50 条;完整 JSON 报告仍包含全部候选路径。

用可复现的参数检查每条路径

两种真实库直接运行

Glob 模式测试调用所选依赖完成判断,报告记录库版本、模式、参数和逐行结果。别人拿到报告后能看清你当时测试的是哪种方言,以及哪些参数参与了匹配。

基础通配符与扩展语法

使用 ? 匹配单个字符,[abc] 表示字符集合,** 表示目录递归,{js,ts} 表示扩展名选择。@(foo|bar).js 等扩展模式同样由库处理,结果不经过另写一套规则的转换器。

按需要开启文件名匹配

默认 *.js 只针对完整候选路径。开启仅匹配文件名后,它也能选中 src/app.js;含 / 的模式仍按路径测试。这个开关适合排查相同扩展名过滤器在不同构建配置中的表现。

把未匹配项也保留下来

输出不会只留下命中的文件。每条候选路径都有原始行号与匹配状态,重复路径分别保留,JSON 报告也包含未命中项,方便回看哪些反例验证了过滤条件。

测试范围与真实边界

一个模式不等于一份规则文件
模式中不能换行,也不会按逗号拆成多个规则;逗号可用于花括号选择。这里没有后规则覆盖前规则、父目录排除或 Git 索引状态,测试 .gitignore 应使用对应工具。
保留匹配库之间的语义差异
minimatch 默认把前导 # 当注释、前导 ! 当取反;picomatch 把 # 当普通文本,并可将 !(foo).js 解析为否定扩展模式。数值范围的花括号行为也可能不同,请使用实际路径验证。
反斜杠不能同时承担两种角色
Windows 分隔符模式把所有反斜杠转为 /,此时反斜杠不再转义星号。工具不会额外消除 ..、删除盘符或模拟 Windows 文件系统;POSIX 模式按原字符串交给库处理。
空行跳过,空格与重复行保留
路径可用 LF、CRLF 或 CR 分行,原始行号不会因跳过空行而重排。前后空格属于路径内容;控制字符和无效 Unicode 会报错,因此本输入格式不支持文件名本身带换行。
超限后不输出部分成功报告
模式最多 256 个 UTF-16 代码单元,非空路径最多 200 条,每条最多 512 个,输入合计最多 131,072 个。minimatch 花括号展开上限为 1,000 项;后台计算超过 2 秒终止,导出保持禁用。
匹配结果不证明文件存在
本页不扫描目录、不读取文件内容,也不获取 URL。未闭合的 [ 等语法可能被库当作普通字符,而不是语法错误;显示未匹配只说明当前候选字符串没有命中。

Glob 模式测试常见问题

路径模式中的 * 和 ** 有什么区别?

单星通常只在一个路径段内匹配。需要跨目录时,应把双星写成独立路径段,例如 src/**/*.ts;在文件名中简单多写一个星号,不能作为适用于所有库的递归写法。

支持花括号中的多个选择吗?

支持,例如 *.{js,ts} 可选择两种扩展名。minimatch 还会展开 file{01..12}.js 一类数值范围;picomatch 对范围的处理不同,因此编号文件最好提供边界样例逐个验证。

默认区分大小写吗?

默认区分。启用忽略大小写会设置 nocase,例如 **/*.ts 可以进一步命中 APP.TS。这个设置不会改变点文件选项,两种差异需要分别核对。

为什么 src/**/*.ts 也能匹配 src/index.ts?

独立路径段 ** 可以代表零层目录,所以直属文件也会命中。若需要恰好一层中间目录,可测试 src/*/*.ts,并同时保留直属和嵌套文件作为正反样例。

为什么星号没有匹配点开头的隐藏文件?

两种引擎默认都关闭 dot。启用包含隐藏文件,或在模式相应位置明确写出点,才能覆盖相应路径。例如使用字面路径 src/.hidden.ts 不需要额外开启 dot。

有值得补充的路径案例?

再加入一个边界样例

把应该命中与不该命中的路径放在一起,每次只改一个参数,再保存当前报告。