Regex Generator
Generate regular expressions from example patterns or descriptions. Build complex regex patterns step-by-step without memorizing syntax.
Building Regex Step by Step
| Need | Pattern | Explanation |
Phone number\d{3}-\d{3}-\d{4}3 digits, dash, 3 digits, dash, 4 digits
Email[\w.-]+@[\w.-]+\.[a-z]{2,}word chars, @, domain, TLD
Date\d{4}-\d{2}-\d{2}YYYY-MM-DD format
Time\d{2}:\d{2}(:\d{2})?HH:MM or HH:MM:SS
| ZIP code | \d{5}(-\d{4})? | 5 digits, optional +4 |
Regex Generator Helpers
``javascript
const regexBuilder = {
// Common patterns
digit: '\\d',
digits: (n) => \\d{${n}},
letter: '[a-zA-Z]',
letters: (n) => [a-zA-Z]{${n}},
word: '\\w+',
whitespace: '\\s+',
// Quantifiers
optional: (p) => (${p})?,
oneOrMore: (p) => (${p})+,
zeroOrMore: (p) => (${p})*,
exactly: (p, n) => (${p}){${n}},
between: (p, min, max) => (${p}){${min},${max}},
// Structure
group: (p) => (${p}),
namedGroup: (name, p) => (?<${name}>${p}),
nonCapturing: (p) => (?:${p}),
either: (...patterns) => (${patterns.join('|')}),
// Anchors
startsWith: (p) => ^${p},
endsWith: (p) => ${p}$,
exact: (p) => ^${p}$,
// Escape special characters
escape: (str) => str.replace(/[.*+?^$\{}()|[\]\\]/g, '\\$&')
};
// Build phone pattern
const phoneRegex = regexBuilder.exact(
regexBuilder.digits(3) + '-' +
regexBuilder.digits(3) + '-' +
regexBuilder.digits(4)
);
// Result: ^\d{3}-\d{3}-\d{4}$
`
Common Pattern Templates
| Pattern Name | Regex | Matches |
US Phone\(\d{3}\) \d{3}-\d{4}(555) 123-4567
Credit Card\d{4}[- ]?\d{4}[- ]?\d{4}[- ]?\d{4}1234-5678-9012-3456
SSN\d{3}-\d{2}-\d{4}123-45-6789
UUID[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}UUID format
Hex color#[0-9a-fA-F]{6}\b#FF5733
| IPv4 | \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} | 192.168.1.1 |
Capture Groups for Extraction
`javascript
// Extract parts of a phone number
const phonePattern = /\((\d{3})\) (\d{3})-(\d{4})/;
const match = "(555) 123-4567".match(phonePattern);
// match[1] = "555" (area code)
// match[2] = "123" (exchange)
// match[3] = "4567" (subscriber)
``