Tools
Regex tester
Write a regular expression, flip the flags you need, and watch matches highlight live inside your test string. Every match is broken down by position, numbered capture group, and named group, so you can debug a tricky pattern without leaving the page. It runs entirely in your browser: nothing you type is ever uploaded.
Write the pattern without the surrounding slashes. Toggle flags below.
Highlighted matches
3 matchesContact ada@example.com or grace@navy.mil for support. Invalid: not-an-email Also try hopper@compiler.org today.
Match details
- #1index 8
ada@example.comgroup 1adagroup 2example3 · tldcom - #2index 27
grace@navy.milgroup 1gracegroup 2navy3 · tldmil - #3index 86
hopper@compiler.orggroup 1hoppergroup 2compiler3 · tldorg
Everything runs locally in your browser using the native JavaScript RegExp engine. Nothing you type is ever uploaded.
About this regex tester
Regular expressions are compact but unforgiving: one stray anchor or greedy quantifier and a pattern silently matches the wrong thing. This tester gives you an immediate, visual feedback loop: type a pattern, and the highlighted view shows exactly what it captures across the whole input. It uses the native JavaScript RegExp engine, so what you see here matches how your code behaves in Node.js and the browser.
Because it is fully client-side, it is safe for sensitive text. Paste a chunk of a log file, a stack trace, or sample records to confirm a redaction or extraction pattern works before it ships, and none of it is transmitted anywhere.
Frequently asked questions
- Is my data sent to a server?
- No. The pattern, flags, and test string never leave your browser. Matching runs entirely on your device using the native JavaScript RegExp engine, so you can safely paste logs, tokens, or production data.
- Which regex flavor does this use?
- It uses the JavaScript (ECMAScript) RegExp engine, the same one that runs in Node.js and every browser. Enter your pattern without the surrounding slashes and toggle the g, i, m, s, u, and y flags as checkboxes.
- Does it support named capture groups?
- Yes. Use (?<name>…) and each match lists both the numbered group and its name alongside the captured value, so you can verify complex patterns at a glance.
- What do the flags mean?
- g finds every match instead of just the first, i ignores case, m makes ^ and $ match at line breaks, s lets . match newlines (dotAll), u enables full Unicode handling, and y (sticky) anchors matching to the current position.
- Why did my match list stop early?
- The tool caps results at a few thousand matches so a broad global pattern can’t build an unbounded list. If you hit the cap, tighten your pattern or shorten the test string.
- What happens with a catastrophic (ReDoS) pattern?
- Matching runs off the main thread with a short time budget. If a pattern backtracks catastrophically (nested quantifiers like (a+)+ on non-matching input are a classic cause), the run is cancelled and you get a timeout message instead of a frozen tab.

