Skip to main content
Dev & Data Updated

Regular Expression (Regex) Tester, Debugger & Cheat Sheet

Test and debug regular expressions in real-time with capture group extraction, interactive flag toggles (g, i, m, s, u, y), and an essential regex cheat sheet.

Real-time ECMAScript regular expression evaluation with match and capture group highlighting
Full flag toggle support: `g` (global), `i` (case-insensitive), `m` (multiline), `s` (dotAll), `u` (unicode), `y` (sticky)
Interactive capture group breakdown with index, length, and named capture group extraction
Curated library of tested patterns: Email, URL, IPv4/IPv6, UUID, Phone, Slug, and Strong Password
Built-in quick reference cheat sheet for anchors, character classes, quantifiers, and lookarounds
Sponsored Ad Zone

Clean, non-intrusive developer tools sponsor zone. Zero cumulative layout shift.

Comprehensive Technical Manual

The Comprehensive Guide to Regular Expressions: Syntax, Optimization, and Safety

In-depth specifications, architectural mechanics, real-world code implementations, and industry best practices.

01

Core Syntax Fundamentals: Anchors, Classes, and Quantifiers

  • Regular expressions (Regex) provide a formal language for pattern matching within text. Core building blocks include:
  • Anchors (^ for start of string/line, $ for end of string/line, \b for word boundary).
  • Character Classes (\d for digits [0-9], \w for word characters [A-Za-z0-9_], \s for whitespace).
  • Quantifiers (+ for 1 or more, * for 0 or more, ? for optional 0 or 1, {min,max} for bounded repetitions).
  • Greedy vs Lazy: Standard quantifiers are greedy, matching as much text as possible. Adding ? makes them lazy (matching the minimum text required).
Implementation Example
// Greedy vs Lazy Quantifier Comparison
const html = '<div class="card">Hello</div><div class="footer">World</div>';

// ❌ Greedy: Matches from the first '<div' to the final '</div>'
const greedy = html.match(/<div.*<\/div>/);

// ✅ Lazy: Matches only the first individual container
const lazy = html.match(/<div.*?<\/div>/);
02

Capture Groups, Named Groups, and Non-Capturing Groups

Parentheses define capture groups, isolating sub-strings within matches. Non-capturing groups (?:pattern) apply quantifiers without storing match indices in memory, boosting execution speed. ES2018 introduced named capture groups (?<name>pattern), providing self-documenting code and eliminate brittle numeric index lookups.

Implementation Example
// Named Capture Groups in Modern TypeScript
const log = '2026-08-28 ERROR [AUTH] Token expired for user_99';
const regex = /^(?<date>\d{4}-\d{2}-\d{2})\s+(?<level>[A-Z]+)\s+\[(?<module>\w+)\]\s+(?<msg>.*)$/;

const match = log.match(regex);
if (match?.groups) {
  const { date, level, module, msg } = match.groups;
  console.log(`Level: ${level}, Module: ${module}`);
}
03

Advanced Lookaround Assertions: Lookahead and Lookbehind

  • Lookaround assertions match characters without including them in the final matched result (zero-width assertions):
  • Positive Lookahead (?=...): Asserts condition matches immediately ahead.
  • Negative Lookahead (?!...): Asserts condition does not match ahead.
  • Positive Lookbehind (?<=...): Asserts condition precedes match.
  • Negative Lookbehind (?<!...): Asserts condition does not precede match.
Implementation Example
// Password Strength Regex with Positive Lookaheads
// Requires: 8+ chars, at least 1 uppercase, 1 lowercase, 1 number, 1 special char
const passwordRegex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]).{8,}$/;
04

Catastrophic Backtracking and ReDoS Vulnerability Prevention

Regular Expression Denial of Service (ReDoS) occurs when nested ambiguous quantifiers (such as (a+)+$) force the regex engine into exponential backtracking permutations when evaluating non-matching input strings. Always anchor patterns, avoid overlapping nested quantifiers, and test expressions against malicious input lengths.

Implementation Example
// ❌ Vulnerable to Catastrophic Backtracking (ReDoS)
// const vulnerable = /(a+)+$/;

// ✅ Safe Linear-Time Equivalent
const safe = /^a+$/;
Knowledge Base & Clarifications

Frequently Asked Questions: Regex Tester

Got questions about how Regex Tester operates, client-side cryptographic safety, or performance limits? Explore common answers below.

Complementary Utilities
View all in Dev & Data →