← All articles
Developer Guides

How to test a regular expression written by AI

Test an AI-written regular expression with positive, negative, and boundary cases; catch greedy matches and runtime differences before using it.

A regular expression is a small program for matching text. A pattern that matches one sample may also accept too much, reject valid input, or behave differently when used with a global flag or another runtime. Treat an AI-written expression as a hypothesis and test its intended behavior.

Start with examples, not the pattern

Write down strings that should match and strings that must not. Include boundaries and near-misses. For a date-like field, test the exact allowed shape, missing digits, extra characters, and impossible dates. A pattern may validate 2026-13-40 as a shape even though it is not a real calendar date; use date parsing for semantic validation.

  • order-42: Should match as an ordinary supported value.
  • order-: Should not match because the identifier is missing.
  • xorder-42x: The expected result depends on whether you want a substring match or a whole-input match; this case reveals whether the pattern has suitable boundaries.

Check anchors, flags, and greediness

In JavaScript, ^ and $ express input boundaries in ordinary cases; the m flag changes how they treat line boundaries. A global (g) or sticky (y) RegExp can retain lastIndex, so repeated .test() calls may alternate results unless state is handled deliberately.

Quantifiers such as * and + are greedy by default. For example, /<.*>/ against <b>one</b><b>two</b> can consume from the first < to the last >. A lazy quantifier like /<.*?>/ finds shorter matches, but it still is not a safe HTML parser. Prefer a real parser for nested or structured formats.

Try the Toolsnix Regex Tester with a small test set, then verify the expression in the exact language and flags where it will run.

Be careful with validation patterns

A regex can check a format without proving that a value exists or is valid. Email patterns, for example, are not a substitute for a confirmation flow. Avoid accepting a security-sensitive identifier based on a pattern copied from an answer without a threat model and tests.

For untrusted or very long input, consider runtime and worst-case behavior. Nested repetition and overlapping alternatives can cause excessive backtracking in some engines. Set reasonable input limits and use a safer, purpose-built parser when input structure warrants it.

A compact test checklist

  1. Add at least two valid and two invalid examples.
  2. Check whether the whole string or only a substring should match.
  3. Test empty input, delimiters, newlines, Unicode, and long input when relevant.
  4. Verify flags and behavior in the production runtime.
  5. Keep the examples as automated regression tests.

FAQ

Does the tester prove the regex is correct?

No. It shows how a pattern behaves on the inputs you provide. Your expected cases and the target runtime define correctness.

Should I use a regex to parse HTML or JSON?

Use a parser for nested structured formats. A regex may help with a narrow extraction task, but it does not replace a grammar-aware parser.

Why did a global pattern return alternating results?

JavaScript global and sticky regular expressions keep a lastIndex between calls. Reset it or create a fresh expression when repeated checks should be independent.

Further reading