Free Online Regex Tester, Live Matches, Groups and Replace Preview
Test a regular expression against your own text and see every match highlighted as you type. Named and numbered capture groups are listed for each match, the flags are switches, and a replace field shows a substitution live. A plain-English note explains a pattern, and a broken one is reported clearly.
Free Forever Nothing Uploaded Live Highlighting Replace Preview
Share this tool
Advertisement Slot (Top Banner)Google AdSense Unit • Responsive Banner
Regex Tester Everything happens in this tab. Nothing you paste is sent anywhere.
Pattern//
Flags
Test text
Matches
0 matches.
Replace with
Buy Us A Coffee
Enjoying WizTools123? Help keep our server infrastructure
100% free and open for everyone.
Regular expressions are not one language; they are a family of slightly different ones. What
works in PCRE, the flavour PHP and many editors use, is not always identical to what works in
Python, or in JavaScript. A tester that runs a different engine from your code can pass a
pattern that then fails where you actually need it.
This tester runs the browser's own JavaScript regular expression engine, so if your code
is JavaScript, what matches here matches there. The flags are the JavaScript flags, the
group syntax is the JavaScript syntax, and the replacement understands $1 and named groups
the way String.replace does. If you are writing regex for a different language, treat the
results as a close guide rather than a guarantee, because the flavours differ in the corners.
Capture groups are where a regex earns its keep, which is why they are listed in full.
Matching is only half the job; pulling the year out of a date or the domain out of an email
is the other half, and that is what groups do. Every match here shows its numbered groups and
any named ones, so you can see exactly what each bracket captured, including the ones that
matched nothing.
A pattern can be written so badly that it hangs, and that is a real risk in production.
Certain patterns with nested quantifiers take exponential time on the wrong input, a problem
called catastrophic backtracking, and it has taken down real websites. This tester caps its
scanning so it cannot freeze your tab, but the lesson is worth keeping: if a pattern feels
slow here on a small input, it will be dangerous on a large one in your code.
Where Your Input Goes
Nowhere. And you can check that yourself.
Your pattern and test text, which might be real data, stay in your browser.
It is all done by your own browser. Press F12, open the Network tab, and use the tool:
the page fetches its own code and nothing else. Or load the page, turn off your wifi, and
carry on. It still runs, because there was never a server in the middle.
How to Test a Regular Expression
A few steps, and nothing is uploaded.
1
Type your patternIn the slashes at the top. The flags are switches beside it; global is on by default.
2
Paste the text to testEvery match is highlighted as you type, with a count.
3
Read the groupsEach match lists its numbered and named capture groups, so you can see what every bracket caught.
4
Try a replacementThe replace field shows the substitution live, with $1 and named groups working as they do in code.
What to Know About Regex
Including the things this tool cannot do.
This runs the browser's own JavaScript regex engine, so a match here is a match in JavaScript code. Regex flavours differ between languages: a pattern that works in PCRE, which PHP and many editors use, is not always identical in JavaScript or Python. If your code is JavaScript, this is exact. If it is not, treat the result as a close guide, because the corners of each flavour differ.
Capture groups are shown in full because they are usually the point. Matching tells you the pattern fits; groups let you pull the pieces out, like the year from a date or the name from a path. Every match lists its numbered groups and any named ones, including the ones that matched nothing, which is exactly the information you need when a group is not capturing what you expected.
The global flag changes how many matches you get, and it is on by default here. Without the g flag a regex finds only the first match, which surprises people testing a pattern meant to find all of them. With it on you see every match highlighted. The other flags do what they say: i ignores case, m makes ^ and $ match line boundaries, s lets a dot match newlines.
A regex can be written so that it hangs on the wrong input, and no tester can fix that for you. Nested quantifiers can cause catastrophic backtracking, where the engine takes exponential time and effectively freezes. This tool caps its scanning so your tab stays responsive, but if a pattern feels slow here it is a warning, not a quirk: the same pattern can bring down a server on a larger input.
Key Features & Capabilities
What this tool does, and what it deliberately does not.
Live highlightingEvery match marked in the text as you type the pattern.
Every group listedNumbered and named capture groups for each match.
Replace previewA substitution shown live, with $1 and named groups working.
The real engineThe browser's own regex, so JavaScript matches here match in your code.
Safe from hangsScanning is capped, so a bad pattern cannot freeze the tab.
Nothing uploadedYour pattern and test text stay in the tab.
About the Regex Tester
A regular expression is the fastest way to find or pull structured pieces out of text, and the slowest thing in the world to get right by staring at it. The only sane way to build one is to try it against real examples and watch what it matches, adjusting until it catches everything it should and nothing it should not.
This gives you that loop, live. Type a pattern, paste some text, and every match lights up as you go, with a count and a full breakdown of what each capture group caught. A replace field shows a substitution applied in real time, so you can check that pulling the pieces back out works before you commit the pattern to code.
It runs the browser's own regular expression engine, which matters more than it sounds. Regex is a family of dialects, and a tester on a different engine can bless a pattern that then behaves differently where you use it. For JavaScript this is exact; for other languages it is a close and honest guide. And it caps its own scanning, so a pattern that would hang in production shows as slow here rather than freezing your tab.
Frequently Asked Questions
Whether it matches your language, the global flag, and catastrophic backtracking.
If your language is JavaScript, yes exactly, because this uses the browser's own engine. For PHP, Python or others, treat it as a close guide. The common features behave the same, but the flavours differ in edge cases like lookbehind, certain escapes and Unicode handling.
The global flag is off. Without g, a regex stops at the first match. Turn on the g switch and you will see every match highlighted. It is on by default, so if you turned it off, that is why.
Brackets in the pattern capture pieces, numbered from left to right, and named groups use the (?...) syntax. In the replace field, $1 inserts the first group and $ inserts a named one, exactly as String.replace does in JavaScript. The groups table shows what each one captured for every match.
A badly written one can, through catastrophic backtracking, where nested quantifiers make the engine take exponential time. This tool caps its scanning so your tab stays responsive, but if a pattern feels slow here, rewrite it: the same pattern can take down a server on a larger input.
No. Everything runs in your browser. The pattern and the test text, which might be real data, stay in the tab. You can confirm it in the Network tab or by working offline.
Every Other Developer Tool
88 more tools in this set. All free, all in your browser.