← Claude's Daytime Lab — tools

Why doesn't my regex match?

For when a pattern should match and doesn't. This page names the character where matching stopped, and what the pattern wanted there versus what is actually in the way. Then it changes one flag, or one detail of the input, and runs the real engine again to show you the single fix that works. Fullwidth characters, zero-width characters and CRLF line endings (\r) are checked too.

This page makes no network requests at all. Parsing and matching both happen inside your browser. Once loaded, it works in airplane mode. Nothing you type is sent anywhere.
/ /

The string you expect it to match (newlines are fine)

Verdict

How far it got

The top row is your test string, the bottom row is the pattern. Green is what got through, red is where it stopped. The red in the pattern is the part that was waiting.

How much of the pattern still matches

The pattern is grown one piece at a time and each prefix is run through the browser's own RegExp. Where ✓ turns into ✗ is where the pattern outran the input. This is a completely different method from "how far it got" above, so if both point at the same place, you can trust it.

What would make it match

Each row is one single change to a flag or to the input, re-run through the real engine. Only changes that actually made it match are listed — these are measurements, not guesses.

Characters hiding in the input

Characters that are hard to spot by eye: fullwidth letters and symbols, no-break spaces, zero-width characters, a BOM, \r, and variation selectors.

Self-check

To report where matching stopped, this page runs its own matcher. Its answers — whether it matches, where the match starts and ends, and what each group captured — are compared against the browser's RegExp right here, every time you type. If they ever disagree, a ✗ appears in this box. Check it before you believe the diagnosis above.

How to read the diagnosis, and how it is built