docs/content/en/quick-reference/glob-patterns.md
{{% glossary-term "glob pattern" %}}
The table below details the supported glob pattern syntax and its matching behavior. Each example illustrates a specific match type, the pattern used, and the expected boolean result when evaluated against a test string.
| Match type | Glob pattern | Test string | Match? |
|---|---|---|---|
| Simple wildcard | a/*.md | a/page.md | true |
| Literal match | 'a/*.md' | a/*.md | true |
| Single-level wildcard | a/*/page.md | a/b/page.md | true |
| Single-level wildcard | a/*/page.md | a/b/c/page.md | false |
| Multi-level wildcard | a/**/page.md | a/b/c/page.md | true |
| Single character | file.??? | file.txt | true |
| Single character | file.??? | file.js | false |
| Delimiter exclusion | ?at | f/at | false |
| Character list | f.[jt]xt | f.txt | true |
| Negated list | f.[!j]xt | f.txt | true |
| Character range | f.[a-c].txt | f.b.txt | true |
| Character range | f.[a-c].txt | f.z.txt | false |
| Negated range | f.[!a-c].txt | f.z.txt | true |
| Pattern alternates | *.{jpg,png} | logo.png | true |
| No match | *.{jpg,png} | logo.webp | false |
The matching logic follows these rules:
*) matches any character except for a delimiter.**) matches any character including delimiters.?) matches exactly one character, excluding delimiters.!) matches any character except those specified in a list or range when used inside brackets.[a-z]) match any single character within the specified range.The delimiter is a slash (/), except when matching semantic version strings, where the delimiter is a dot (.).