Back to all guides

Regular Expressions (Regex) Cheat Sheet: Patterns, Tokens, and Practical Examples

A comprehensive developer reference for regex anchors, quantifiers, lookaround assertions, capture groups, and common validation patterns.

DK
Dipanshu Kumar
Founder & Software Architect at Tool Yaar
Updated: 2026-11-0610 min read

The Foundations of Regular Expression Engines

A Regular Expression (commonly abbreviated as Regex or RegExp) is a formalized syntax for defining string search and replacement patterns. Under the hood, regex engines evaluate text using Deterministic Finite Automata (DFA) or Non-deterministic Finite Automata (NFA).

Whether you are building frontend input validation (checking form emails), backend log parsers, search-and-replace refactorings in code editors, or data scraping pipelines, mastering regex allows you to perform in a single line of code what would otherwise require dozens of nested string-parsing loops.

Character Classes, Shortcuts, and Anchors

Anchors assert positions rather than matching actual characters, while character classes define allowable character sets:

  • ^ (Caret): Asserts position at the start of a string or line (in multiline mode).
  • $ (Dollar): Asserts position at the end of a string or line.
  • \b (Word Boundary): Matches a zero-width position between a word character and a non-word character.
  • \d / \D: Matches any decimal digit [0-9] / Matches any non-digit.
  • \w / \W: Matches any word character [a-zA-Z0-9_] / Matches any non-word character.
  • \s / \S: Matches any whitespace character (space, tab, newline) / Matches any non-whitespace.
  • [abc] / [^abc]: Character set matching any of a, b, or c / Negated set matching anything EXCEPT a, b, or c.

Quantifiers: Greedy vs Lazy Matching Explained

Quantifiers dictate how many consecutive times a token can repeat:

• `*` (Star): Matches 0 or more times.

• `+` (Plus): Matches 1 or more times.

• `?` (Question Mark): Matches 0 or 1 time (optional token).

• `{n,m}`: Matches between n and m times.

By default, quantifiers are greedy—they consume as much text as possible. For example, applying `<.*>` against `<div>hello</div>` matches the entire string from the first `<` to the last `>`. Appending a question mark makes the quantifier lazy (`<.*?>`), causing it to stop at the very first closing bracket (`<div>`).

Greediness Trap

Failing to use lazy matching when parsing HTML or delimited quotes is one of the most common causes of regex parsing bugs.

Groups and Lookarounds

Capture groups `(...)` remember matched substrings for backreferences or extraction. If grouping is needed purely for logic without memory overhead, use non-capturing groups `(?:...)`.

Lookarounds assert whether a pattern is followed or preceded by another pattern without including it in the final match result:

• Positive Lookahead `(?=abc)`: Matches if followed immediately by "abc".

• Negative Lookahead `(?!abc)`: Matches if NOT followed by "abc".

• Positive Lookbehind `(?<=abc)`: Matches if preceded immediately by "abc".

• Negative Lookbehind `(?<!abc)`: Matches if NOT preceded by "abc".

Battle-Tested Validation Snippets (Email, Phone, URL)

Standard patterns for everyday developer validation tasks:

Target ValidationRecommended Regex PatternNotes & Limitations
Standard Email^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$Pragmatic check; balances RFC 5322 with practical syntax
Strong Password^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$Requires min 8 chars, 1 upper, 1 lower, 1 digit, 1 symbol
HTTP / HTTPS URL^https?:\/\/(?:www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b(?:[-a-zA-Z0-9()@:%_\+.~#?&\/=]*)$Standard web URL validation
ISO Date (YYYY-MM-DD)^\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$Validates structure and month/day boundaries
Indian Mobile Number^[6-9]\d{9}$Validates 10-digit Indian numbers starting with 6, 7, 8, or 9

Preventing ReDoS (Regular Expression Denial of Service)

Catastrophic backtracking occurs when nested quantifiers (such as `(a+)+$`) evaluate non-matching strings. The engine explores an exponential number of permutations, spiking CPU utilization to 100% and freezing the server or browser tab.

Always avoid nesting indefinite quantifiers inside groups, and enforce strict execution timeouts when evaluating user-supplied regular expressions.

Frequently Asked Questions

Q:What do the flags g, i, m, and s mean in regex?

`g` (global) finds all matches rather than stopping at the first; `i` (ignore case) enables case-insensitive matching; `m` (multiline) causes ^ and $ to match line starts and ends; `s` (dotAll) allows the dot (.) to match newline characters.

Q:Can regular expressions parse nested HTML or XML tags?

No. HTML is a context-free grammar with arbitrary nesting depth, while standard regular expressions are designed for regular languages. Use a dedicated DOM parser for HTML processing.

Q:Why does my regex match spaces when using \s?

\s matches all whitespace characters, including space, tab (\t), newline (\n), carriage return (\r), and form feed (\f).

Q:How do I test regular expressions in my browser?

You can test regex directly in the browser console using `/pattern/.test(string)` or `string.match(/pattern/g)`, or via interactive developer tools.

Interactive Tools

Try the Free Tools Mentioned in this Guide

DK
About the Author

Dipanshu Kumar

Dipanshu is the founder and lead software architect of Tool Yaar. He designs high-performance client-side web utilities, WebAssembly engines, and offline Android tools focused on zero-upload user privacy and universal digital accessibility.