Developer TOOL

Regular Expression Tester

Run a regular expression against text you paste, with a list of every match: where it starts, what each group captured, and what each named group holds. A match-count cap and a zero-length guard stop a pattern from locking the tab, and a pattern that will not compile is explained rather than thrown at you.

Processed locally in your browser — your file is never uploaded

DEVELOPERRegular Expression Tester
Processed locally
Input
Output

Written without the slashes. Furtu adds the global flag, because a list of matches needs it.

Collection stops here so a loose pattern cannot produce a result the browser cannot lay out.

Your text never leaves this page.

How regular expression tester works

  1. Write the patternNo slashes, and Furtu adds the flags you did not ask for — with a note when it does.
  2. Paste the subject textThe match list builds as you type, with a cap you control.
  3. Read the tableMatch index, matched text, each group, and each named group.

What you get

Test a pattern against sample text and see every match, group and index. Everything happens inside this page: the file is read by your browser, transformed in memory and handed straight back to you as a download. There is no upload queue, no waiting for a server, and nothing left behind when you close the tab.

Supported formats

This tool works on text you paste or type, so there is no file format to worry about. Nothing you type is sent anywhere.

Limitations, stated up front

  • A single catastrophic match attempt cannot be interrupted from JavaScript. Furtu warns about the pattern shape and caps the match count, but a hostile pattern against a large subject can still hang the tab.
  • The cap stops collection part-way. Furtu says so in the results rather than implying the list is complete.

Frequently asked questions

Can a pattern freeze the page?

One attempt can. A pattern with a quantifier nested inside a quantifier, applied to a long run of characters that ultimately fails, makes the engine try an exponential number of ways to give up. JavaScript offers no way to interrupt a regular expression that is already running, so Furtu cannot save you from a single attempt — it warns when it sees that shape, and it bounds how many matches it collects. Test destructive patterns on a small sample first.

Why does a pattern matching nothing sometimes hang?

A pattern that can match the empty string leaves the search position exactly where it was, so the next attempt returns the same result and the loop never ends. Furtu advances the position past every zero-length match, and caps the total as well. Both guards are in the code rather than in a timeout, because a timeout would still leave the tab unresponsive.

Which flavour of regex is this?

The one in your browser, which is the JavaScript engine: no lookbehind in older Safari, no possessive quantifiers, no atomic groups, and the Unicode flag changes how a pattern is compiled. Furtu runs the pattern in the same engine that will run your code, which is the point — but a pattern that works in PCRE, Python or Go is not guaranteed to work here.

Why did Furtu add the global flag?

Because a table of matches is meaningless without it: without it, the engine returns the first match and stops. If you asked for no flags at all, Furtu adds the global one and says so, rather than quietly showing you a single hit.