Regex Tester — Online Regular Expression Tester
🔒 Runs in your browser — nothing is sent to a serverRegex tester for live debugging of any regular expression in your browser. Type a pattern, toggle the `g`, `i`, `m`, `s`, `u`, `y` flags and watch every match light up inline in your test string while the match list shows numbered and named capture groups. The same regex tester works for JavaScript, PCRE-style and Python flavours — minor syntax differences are noted, the engine itself is the browser's native `RegExp`. Everything runs 100% inside your browser; the pattern and test string never leave your device, nothing is uploaded, logged or sent to any server. A 1-second safety timer aborts catastrophic backtracking automatically.
- #1at index 14
hello@example.com
Cheatsheet — common regex constructs
\d— digit (0–9)\w— word char (letter, digit, underscore)\s— whitespace.— any character (except newline unlesss)^/$— start / end of string (or line withm)\b— word boundary[a-z]— character class[^abc]— negated classa?— 0 or 1a*— 0 or morea+— 1 or morea{2,4}— between 2 and 4(abc)— capture group(?:abc)— non-capturing group(?<name>abc)— named capture(?=abc)— positive lookahead(?!abc)— negative lookahead(?<=abc)— positive lookbehind
Why use a live regex tester instead of writing patterns in code
Iterating on a regex inside an editor is slow — every change means a save, a re-run, sometimes a redeploy. A live regex tester collapses that loop to single keystrokes: change a character, see matches and capture groups update, toggle a flag, watch the highlight redraw. Sharing a one-off pattern with a colleague? Paste it here, pin the URL, walk through the matches together. The tool does not store, log or transmit anything, so production logs and PII can be pasted without leaving your machine — far safer than the SaaS regex tester pages that quietly index whatever you type.
Reading the match list and inline highlights
Two views work in tandem. The right pane mirrors the test string and highlights every match inline so the visual shape of the data is preserved — useful for confirming that a multiline anchor lines up where you expect, or that a greedy quantifier is not swallowing more than intended. The match list below is the structured view: position, full match text, then numbered and named capture groups in the order the pattern declares them. Optional groups that did not participate in the match render as `undefined`, exactly like `String.prototype.matchAll` exposes them in JavaScript.
Examples
/\b[\w.+-]+@[\w-]+\.[\w.-]+\b/gMatches: hello@example.com, sales@chișinău.md/(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/Match: 2026-04-26 → year=2026, month=04, day=26/T\d{2}:\d{2}:\d{2}(?:\.\d+)?Z?/giMatches: T09:15:00Z, T14:03:27.842/\b(\w+)\s+\1\b/giMatch: "the the" → group 1 = "the"