Regular expressions — regex — have a reputation for looking like a cat walked across a keyboard. But underneath the intimidation, regex is just find-and-replace with memory: instead of searching for exact text, you describe a pattern, and the machine finds every match. You use patterns every day already. A phone number field "expects 10 digits" is a pattern; regex is the formal language for saying it.
The six symbols that cover most of the work
You do not need the full syntax to be useful. These building blocks handle the overwhelming majority of everyday searches:
That is it. Read them as a small vocabulary:
- \d matches one digit. \d\d\d matches three digits in a row, like 202 in "2024"
- + means "the previous thing, one or more times." So \d+ matches any whole number: 7, 42, 1000000
- . is a wildcard — any single character. a.c matches abc, aXc, a c
- ^ and $ pin the pattern to the start or end of the line. ^Hello matches only lines that begin with Hello
Combining symbols: reading your first real pattern
Take this pattern:
Reading left to right: ^ (start of line), then (19|20) means "either the characters 19 or 20", then \d\d means two more digits, then $ (end of line). The pattern matches a four-digit year between 1900 and 2099. Every symbol maps to a plain-English idea — the skill is reading slowly, one symbol at a time.
Five searches you can actually use
1. Find any year in a document
Pattern: \b(19|20)\d\d\b — the \b marks word boundaries so 2024 inside "V2024X" does not match.
2. Collapse messy double spaces into single spaces
This is the classic find-and-replace win: search ** +** (two spaces, then +) and replace with a single space. Every run of extra spaces collapses at once — no manual hunting.
3. Find amounts with cents
Pattern: \d+.\d\d — digits, then a literal dot (escaped as . because a bare dot means "any character"), then exactly two digits. Matches 19.99, 1250.00, 0.75.
4. Check a form field looks like a year-and-month
Pattern: ^(20)\d\d-(0[1-9]|1[0-2])$ — starts with 20xx, a dash, then a month from 01 to 12 (the [0-9] syntax means "any character from this menu", and 1[0-2] means a 1 followed by 0, 1, or 2).
5. Tidy filenames or product codes
Pattern: [A-Z]{3}-\d{4} — exactly three capital letters, a dash, exactly four digits. Matches ABC-1234 and XYZ-9999; rejects ab-12. The {n} syntax means "exactly n repetitions," and it works with ranges too: {2,4} means between two and four.
The golden rule: match narrowly, not greedily
Beginners write patterns that match too much: searching .+ (any character, one or more) matches entire lines. The craft of regex is adding constraints until the pattern matches exactly what you want and nothing else — boundaries (\b), anchors (^ $), and counted repetitions ({3}) are your precision tools. When a pattern matches too much, tighten it; when it matches too little, loosen one constraint at a time.
Learn by playing, not by reading
Regex is a physical skill — reading about it teaches far less than watching a pattern light up against sample text. The Regex Tester gives you live match highlighting as you type, a cheat sheet of every symbol, and preset patterns (emails, URLs, dates) you can pick apart to see how they work. Type a pattern, watch what it grabs, adjust one symbol, and watch the matches change. Fifteen minutes of that teaches more than an hour of documentation.
Frequently asked questions
Is regex one language or many? One core syntax, with small dialects. Everything above works in JavaScript, Python, most text editors, and the tester on this site. A few tools add exotic features, but the six core symbols travel everywhere.
Can regex parse HTML or full email addresses reliably? For strict validation, patterns grow complicated fast — real email validation is famously hairy. For finding things in your own text, the simple patterns above are the right level of rigor.
What does "escaping" mean? Symbols like . + ( ) [ ] have special powers, so to search for the literal character you precede it with a backslash: . matches a real dot. When a pattern misbehaves, an unescaped special character is the most common culprit.