DEVELOPER GUIDE

How to test regular expressions safely

Use flags, inspect captures, and spot costly patterns with a JavaScript regex tester.

5 min read•DevToolbox editorial

Begin with representative examples

Include matching, nonmatching, empty, and boundary inputs. Test the shortest and longest expected strings. A pattern that works on one example may still accept too much or reject a legitimate value.

Pattern: (\d+)(?:\.(\d+))?
Input: 12.50
Group 1: 12
Group 2: 50

Choose flags deliberately

The g flag finds repeated matches, i ignores case, and m lets line anchors match line boundaries. The s flag allows a dot to match line terminators. The u flag enables Unicode-aware behavior. The y flag uses sticky matching from the current position.

Inspect captures and zero-length matches

Parentheses capture text; noncapturing groups use (?:...). A pattern may match an empty string at a position without highlighting any visible characters. Check the results list for these matches instead of relying only on highlighted text.

Watch for excessive backtracking

Nested quantifiers and ambiguous alternatives can make a regex extremely slow on certain nonmatching inputs. For example, (a+)+$ can behave badly on a long run of a characters followed by a different character. This tester runs the engine in a worker and stops it after one second. A timeout is a cue to simplify the pattern, not proof that shorter inputs are always safe.

Put it into practice with a free tool that runs in your browser.
Open Regex Tester