The engine is the browser's.
A pattern that works here works in Node and in the browser console. There is no second dialect to learn, and no server round trip before a match appears.
Pikkola Regex, tool No. 13
Live highlights as you type, capture groups in a table, a replace simulator, twenty checked presets and a snippet for six languages. One page, and nothing leaves the tab.
/ \b(\w+)@(\w+)\.\w{2,}\b /g
Studio
Matches light up as you type. Click a match to read its groups. The replace box uses the same expression, so what you try is what you copy.
Presets
Press one and it loads into the studio with a sample that should match and a line that should not. The Korean patterns are the ones we use at the desk.
Code
The snippet follows the pattern and flags above. Where an engine has no such feature, the comment says so rather than writing code that quietly fails.
Write a pattern above to see the snippet.
Flags: g is JavaScript only, Python and Go use inline or compiled flags, and Rust carries them inside the pattern.
Reference
| Flag | Name | What it does |
|---|---|---|
| g | global | Find every match instead of stopping at the first. |
| i | ignore case | Match letters without caring whether they are capitals. |
| m | multiline | Let ^ and $ match at every line break, not only at the ends of the text. |
| s | dot all | Let . match a newline too. |
| u | unicode | Treat the pattern as Unicode, so \p{L} and emoji work as one character. |
Why this one
A pattern that works here works in Node and in the browser console. There is no second dialect to learn, and no server round trip before a match appears.
Each one comes with a sample it matches and a line it should not. A pattern that stops matching is visible immediately, which is the failure a copied pattern usually hides.
Go and the Rust regex crate have no backreferences, and their named group syntax differs. The generated snippet says so instead of leaving you to find out in production.
The pattern and the text live in the form. Closing the tab throws them away, which is the point when the text is a customer list or a log line.
Read the privacy noteQuestions
No. The pattern is compiled and run by the browser, and there is no request in the page at all. A content security policy blocks every other origin.
JavaScript RegExp, the same engine as Node and the browser console. It is not PCRE, Python or Go, and the code panel notes where they differ.
Named groups are written (?<name>) in JavaScript and (?P<name>) in Python, and some escapes differ. Python has no global flag either, since findall repeats on its own. The generated snippet is written for the language you pick.
The match list stops at 10,000 and says so, and the status line reports how long the match took. A pattern that takes more than a moment gets a warning, because nested repeats can backtrack for minutes on a long line.
Yes. The replace box uses $1 and $2 for groups, $& for the whole match and $<name> for a named group, and shows the result as you type. With the g flag every match is replaced, without it only the first.
No. They find shapes. A Korean business number has a check digit and a resident number has one too, and a pattern cannot confirm either. Use them to find, then check the value with the issuing system.
Masking. It keeps the birth date and the gender digit and replaces the remaining six, which is the form a support desk can paste into a ticket. Nothing you type leaves the tab.
Current browsers support lookbehind and named groups. Go and the Rust regex crate do not support lookbehind or backreferences, and the code panel says so when you pick them.