---
# System prepended metadata

title: REGEX Cheatsheet

---

# Complete REGEX Cheatsheet

## Table of Contents
- [Basic Syntax](#basic-syntax)
- [Character Classes](#character-classes)
- [Quantifiers](#quantifiers)
- [Anchors & Boundaries](#anchors--boundaries)
- [Groups & Capturing](#groups--capturing)
- [Lookaheads & Lookbehinds](#lookaheads--lookbehinds)
- [Flags/Modifiers](#flagsmodifiers)
- [Special Characters](#special-characters)
- [Common Patterns](#common-patterns)
- [Examples by Use Case](#examples-by-use-case)

---

## Basic Syntax

| Pattern | Description | Example | Matches |
|---------|-------------|---------|---------|
| `.` | Any character (except newline) | `a.c` | "abc", "axc", "a1c" |
| `\` | Escape special character | `\.` | literal "." |
| `|` | OR operator | `cat|dog` | "cat" or "dog" |
| `[]` | Character set | `[abc]` | "a", "b", or "c" |
| `[^]` | Negated character set | `[^abc]` | Any character except "a", "b", "c" |

---

## Character Classes

| Pattern | Description | Equivalent |
|---------|-------------|------------|
| `\d` | Digit | `[0-9]` |
| `\D` | Non-digit | `[^0-9]` |
| `\w` | Word character | `[a-zA-Z0-9_]` |
| `\W` | Non-word character | `[^a-zA-Z0-9_]` |
| `\s` | Whitespace | `[ \t\n\r\f\v]` |
| `\S` | Non-whitespace | `[^ \t\n\r\f\v]` |

### Custom Character Classes
| Pattern | Description |
|---------|-------------|
| `[a-z]` | Lowercase letters |
| `[A-Z]` | Uppercase letters |
| `[0-9]` | Digits |
| `[a-zA-Z]` | All letters |
| `[a-zA-Z0-9]` | Alphanumeric |
| `[aeiou]` | Vowels |
| `[^aeiou]` | Consonants |

---

## Quantifiers

| Pattern | Description | Example | Matches |
|---------|-------------|---------|---------|
| `*` | 0 or more | `ab*` | "a", "ab", "abb", "abbb" |
| `+` | 1 or more | `ab+` | "ab", "abb", "abbb" |
| `?` | 0 or 1 (optional) | `ab?` | "a", "ab" |
| `{n}` | Exactly n times | `a{3}` | "aaa" |
| `{n,}` | n or more times | `a{3,}` | "aaa", "aaaa", "aaaaa" |
| `{n,m}` | Between n and m times | `a{2,4}` | "aa", "aaa", "aaaa" |

### Lazy Quantifiers (Non-greedy)
| Pattern | Description |
|---------|-------------|
| `*?` | 0 or more (lazy) |
| `+?` | 1 or more (lazy) |
| `??` | 0 or 1 (lazy) |
| `{n,m}?` | Between n and m (lazy) |

---

## Anchors & Boundaries

| Pattern | Description | Example | Matches |
|---------|-------------|---------|---------|
| `^` | Start of line | `^Hello` | "Hello" at start |
| `$` | End of line | `world$` | "world" at end |
| `\b` | Word boundary | `\bcat\b` | "cat" as whole word |
| `\B` | Non-word boundary | `\Bcat\B` | "cat" within word |
| `\A` | Start of string | `\AHello` | "Hello" at very start |
| `\Z` | End of string | `world\Z` | "world" at very end |

---

## Groups & Capturing

| Pattern | Description | Example |
|---------|-------------|---------|
| `()` | Capturing group | `(abc)+` |
| `(?:)` | Non-capturing group | `(?:abc)+` |
| `(?<name>)` | Named capturing group | `(?<year>\d{4})` |
| `\1` | Backreference to group 1 | `(\w+)\s+\1` |
| `\k<name>` | Named backreference | `(?<word>\w+)\s+\k<word>` |

---

## Lookaheads & Lookbehinds

| Pattern | Description | Example |
|---------|-------------|---------|
| `(?=)` | Positive lookahead | `\d+(?=px)` |
| `(?!)` | Negative lookahead | `\d+(?!px)` |
| `(?<=)` | Positive lookbehind | `(?<=\$)\d+` |
| `(?<!)` | Negative lookbehind | `(?<!\$)\d+` |

---

## Flags/Modifiers

| Flag | Description | Usage |
|------|-------------|--------|
| `i` | Case insensitive | `/pattern/i` |
| `g` | Global match | `/pattern/g` |
| `m` | Multiline mode | `/pattern/m` |
| `s` | Dot matches newline | `/pattern/s` |
| `x` | Extended/verbose | `/pattern/x` |
| `u` | Unicode | `/pattern/u` |

---

## Special Characters

Characters that need escaping: `. ^ $ * + ? { } [ ] \ | ( )`

| Literal | Escaped |
|---------|---------|
| `.` | `\.` |
| `^` | `\^` |
| `$` | `\$` |
| `*` | `\*` |
| `+` | `\+` |
| `?` | `\?` |
| `{` | `\{` |
| `}` | `\}` |
| `[` | `\[` |
| `]` | `\]` |
| `\` | `\\` |
| `|` | `\|` |
| `(` | `\(` |
| `)` | `\)` |

---

## Common Patterns

### Email
```regex
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
```

### Phone Numbers
```regex
# US Format: (123) 456-7890
^\(\d{3}\)\s\d{3}-\d{4}$

# International: +1-234-567-8900
^\+\d{1,3}-\d{3}-\d{3}-\d{4}$
```

### URLs
```regex
^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)$
```

### IP Address
```regex
^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$
```

### Date Formats
```regex
# YYYY-MM-DD
^\d{4}-\d{2}-\d{2}$

# MM/DD/YYYY
^(0[1-9]|1[0-2])\/(0[1-9]|[12][0-9]|3[01])\/\d{4}$

# DD/MM/YYYY
^(0[1-9]|[12][0-9]|3[01])\/(0[1-9]|1[0-2])\/\d{4}$
```

### Time
```regex
# 24-hour format: HH:MM
^([01]?[0-9]|2[0-3]):[0-5][0-9]$

# 12-hour format: HH:MM AM/PM
^(1[0-2]|0?[1-9]):[0-5][0-9] (AM|PM)$
```

### Credit Card
```regex
# Visa
^4[0-9]{12}(?:[0-9]{3})?$

# Mastercard
^5[1-5][0-9]{14}$

# American Express
^3[47][0-9]{13}$
```

### Social Security Number
```regex
^\d{3}-\d{2}-\d{4}$
```

### Postal Codes
```regex
# US ZIP Code
^\d{5}(-\d{4})?$

# UK Postal Code
^[A-Z]{1,2}[0-9R][0-9A-Z]? [0-9][A-Z]{2}$

# Canadian Postal Code
^[A-Z]\d[A-Z] ?\d[A-Z]\d$
```

---

## Examples by Use Case

### Validation
```regex
# Strong Password (8+ chars, uppercase, lowercase, number, special char)
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$

# Username (3-16 chars, alphanumeric and underscore)
^[a-zA-Z0-9_]{3,16}$

# Hex Color Code
^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$
```

### Data Extraction
```regex
# Extract numbers from text
\d+(\.\d+)?

# Extract words
\b[A-Za-z]+\b

# Extract quoted strings
"([^"]*)"

# Extract HTML tags
<\/?[^>]+>

# Extract file extensions
\.([a-zA-Z0-9]+)$
```

### Text Processing
```regex
# Remove extra whitespace
\s+

# Match whole words
\b\w+\b

# Match lines starting with specific text
^pattern.*$

# Match content between parentheses
\(([^)]+)\)

# Match content between brackets
\[([^\]]+)\]
```

### Advanced Patterns
```regex
# Balanced parentheses (simple case)
\([^)]*\)

# Remove comments (// style)
\/\/.*$

# Match floating point numbers
-?\d+(\.\d+)?([eE][+-]?\d+)?

# Match words with specific prefixes
\b(pre|post|anti|pro)\w*

# Match repeated words
\b(\w+)\s+\1\b
```

---

## Quick Tips

1. **Test your regex**: Use online tools like regex101.com or regexr.com
2. **Start simple**: Build complex patterns step by step
3. **Use non-capturing groups**: `(?:...)` when you don't need to capture
4. **Be specific**: `\d` instead of `.` when you want digits
5. **Use anchors**: `^` and `$` for exact matches
6. **Escape special characters**: Use `\` before special characters when literal
7. **Consider performance**: Avoid excessive backtracking with lazy quantifiers
8. **Use character classes**: `[abc]` is more efficient than `(a|b|c)`

---

*This cheatsheet covers the most commonly used regex patterns. For language-specific variations or advanced features, refer to your programming language's regex documentation.*