REGEX EXPLAINER
Break any regular expression into a plain-English, token by token explanation. Nothing leaves your browser.
^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$
^matches the start of the string (or line, in multiline mode)[A-Za-z0-9._%+-]+matches any character in the set [A-Za-z0-9._%+-], repeated one or more times@matches the literal text "@"[A-Za-z0-9.-]+matches any character in the set [A-Za-z0-9.-], repeated one or more times\.matches an escaped literal "."[A-Za-z]matches any character in the set [A-Za-z]{matches the literal text "{"2,matches the literal text "2,"}matches the literal text "}"$matches the end of the string (or line, in multiline mode)1@GrxECG.YtCzPEE%Hu8g@PU7.Rc.TqyrGxdeULw6Ej@JSP8.zXbfDmBS5b+t@uh.JmsmPm@ayq-eB.KrqWpBS
How to use the regex explainer
- 1
Paste a regular expression pattern.
- 2
The explainer breaks it into tokens — literals, character classes, groups, anchors, and quantifiers.
- 3
Read each token's plain-English meaning, in the order it appears in the pattern.
- 4
Adjust the pattern and watch the explanation update instantly.
Questions
- What regex syntax does this understand?
- Standard JavaScript regex syntax: character classes (\d, \w, \s and their negations), the wildcard (.), anchors (^ and $), character sets ([a-z]), capturing/non-capturing/named groups, lookaheads and lookbehinds, alternation (|), and quantifiers (*, +, ?, {n,m}, including lazy variants).
- How are quantifiers attached to their explanation?
- A quantifier always applies to whatever came immediately before it, so the explainer folds it into the previous token's description — for example \d+ is shown as one entry: "matches any digit, repeated one or more times" — instead of two separate unexplained pieces.
- Why does it also validate the pattern?
- Before explaining anything, the pattern is compiled as a real JavaScript RegExp — if it's invalid, you get the browser's own syntax error instead of a confusing or wrong breakdown.
- Is my regex sent anywhere?
- No. Everything runs locally in your browser with JavaScript — nothing is transmitted or stored.