filetity

What it matched

Contact: ada@example.com and grace@filetity.com Invoice INV-2026-0917 dated 2026-09-10, total 1,240.50 Ring 020 7946 0958 or +44 7700 900123

Flags

As a literal

/[\w.]+@[\w.]+\.\w+/g

LocalThe pattern runs in a worker on your own device, with a 2 second budget. That is not politeness: a pattern like (a+)+b can take longer than the universe has existed on a short string, inside a call nothing on the page can interrupt, and throwing away the worker is the only way to stop it.

PATTERN + TEXT -> MATCHES · Local tool

Regex Tester

Test a regular expression against your own text, with live matches and groups.

Last updated

How do I test a regular expression online?

Type the pattern and the text into filetity's regex tester and every match is highlighted as you type, with the capture groups listed underneath and the pattern shown as a literal you can paste into code. It runs the pattern in a worker with a two second budget, so a pattern with nested repetition gets stopped and explained rather than freezing the tab, which is what happens on most testers. Turn on Replace to preview the result of a substitution, with $1, $<name> and $& all working the way String.replace does. Nothing you type is uploaded.

  1. 01 / Your device

    the file stays here

  2. 02 / Browser memory

    the work runs locally

  3. 03 / Back to you

    saved on this device

When you would use this

Situations, not settings.

A pattern that works on the sample and not on the real file
Paste the real lines in and every match highlights as you type, so you can see which ones it is skipping rather than guessing.
A pattern that hangs the tool you pasted it into
This one runs in a worker with a two second budget and stops, then names the nested repetition that caused it, instead of freezing the tab.
Log lines and customer records you cannot paste into a website
Nothing leaves the tab. The text you are testing against is the sort that usually rules out an online tester entirely.

How it works / no cloud

A conversion engine, not an upload form.

The pattern runs in a Web Worker rather than on the page, and the worker is killed if it has not answered in two seconds. That is not caution for its own sake: a pattern like (a+)+b takes longer than the universe has existed on a forty character string, and it spends that time inside one synchronous call to the regex engine, where no timer on the page can interrupt it. Terminating the worker is the only thing that stops it, which is why every other in-page tester can be frozen by a pattern somebody pasted. Syntax errors are rewritten into what to do about them, and the replacement preview runs on the matches already found rather than executing the pattern a second time.

  • Offline ready
  • Installable app
  • No file limit queue

Straight answers

No accordion. Nothing hidden.

Is it free?
Yes, with no watermark and no page limit.
Does it need an account?
No. There is no account system.
Is my file processed on my device?
Yes. The file is read by your browser and never uploaded. There is no server to send it to.
What formats are supported?
JavaScript regular expressions, the flavour your browser and Node run. All six flags, capture groups, named groups, and $1, $<name> and $& in a replacement.
What are the limits?
The first 5,000 matches are shown, and a pattern that has not finished in two seconds is stopped. Other flavours differ: PCRE lookbehind, Python's named group syntax and .NET balancing groups are not JavaScript and will not compile here.
Does it work on mobile?
Yes, on any modern mobile browser. Large files are limited by the memory the phone gives the browser.
Does it work offline?
Yes, once the page has loaded. The tool keeps working with no network connection.
Why did my pattern get stopped?
It was still running after two seconds. Nested repetition is the usual cause: (a+)+, (a|a)* and (\s*,)* make the engine try every possible way of splitting the text, and the number of ways doubles with each extra character. Making the inner part more specific, so only one split is possible, fixes it and is worth doing before the pattern reaches production.
Which flavour of regex is this?
JavaScript, exactly as your own browser implements it, because the pattern is compiled by the same engine your code will use. That means lookbehind works in current browsers, named groups are (?<name>...), and there is no /x verbose mode. A pattern copied from Python, PHP or .NET may need changing.
What is the g flag actually doing?
Making the search continue past the first match. Without it a pattern finds one match and stops, which is what you want for validating a whole string and not what you want for finding every email in a document. It is on by default here because a tester with it off looks broken.
Is my text sent anywhere?
No. The pattern and the text stay in this tab, and the worker that runs them is created from a blob in the page rather than fetched. People test regexes against log lines and customer records, which is exactly the sort of text that should not be pasted into somebody else's server.

Keep working locally

7 available · more coming