🔍 Regex vs 📁 Glob
Regex vs glob: syntax differences, power, use cases, and when to choose each. Glob for file paths, regex for text — explained with examples.
Use regex when you need to match, extract, or validate complex text patterns — emails, phone numbers, log lines, code. Use glob when you need to match file paths and names using simple wildcard syntax — selecting files in a terminal, configuring .gitignore, or matching paths in build tools.
Regex vs Glob: Side-by-Side Comparison
| Property | Regex | Glob |
|---|---|---|
| Wildcard (any chars) | .* (dot-star) | * (star) |
| Single char wildcard | . (dot) | ? (question mark) |
| Character classes | [a-z], \d, \w | [a-z] only (limited) |
| Anchors | ^ (start) and $ (end) | Pattern implicitly anchored to path |
| Quantifiers | *, +, ?, {n,m} | None (only * and ?) |
| Alternation | (cat|dog) | {cat,dog} (brace expansion) |
| Recursive dirs | Must encode path structure | ** (double star) in extended glob |
| Typical use | Code, logs, text validation | File paths, .gitignore, build tools |
When to use Regex
- Validating email addresses, phone numbers, postcodes
- Extracting data from log files
- Find-and-replace in code editors
- Input validation in forms
- Parsing structured text (CSV rows, HTML tags)
When to use Glob
- .gitignore patterns (*.log, node_modules/)
- Terminal file selection (ls *.js, rm *.tmp)
- Build tool file matching (webpack, Vite, Rollup includes/excludes)
- ESLint/Prettier ignore patterns
- Copying or moving groups of files in scripts
Frequently Asked Questions
Is regex more powerful than glob?
Yes — regex is significantly more expressive than glob. Regex supports quantifiers, lookaheads, backreferences, named groups, and full character class logic. Glob is intentionally simple: it handles the most common file-matching scenarios with minimal syntax. If glob cannot express what you need, regex can.
Can I use regex in .gitignore?
No. .gitignore uses glob patterns, not regex. The * wildcard matches anything except a slash; ** matches across directories. Character classes [abc] work, but regex quantifiers (+, {n,m}) and anchors (^ inside the pattern) do not.
How do I test a regex pattern?
Use the free Regex Tester at allio.tools/tools/developer/regex-tester/ — enter your pattern and test it against sample text with real-time match highlighting. No setup required.
What does ** mean in glob?
In extended glob (supported by most modern tools), ** matches any number of path segments including directory separators. For example, src/**/*.js matches all .js files anywhere under the src/ directory, at any depth. A single * only matches within one directory level.