Skip to content

Regex Tester — Test Regular Expressions Online

Test regex patterns with real-time highlighting, capture groups, and flag controls — free, private, and browser-based.

Last updated:

//g

When you need a regex tester

Regular expressions are one of the most powerful tools in a developer's toolkit, but they are also one of the hardest to get right on the first try. A regex tester gives you an interactive sandbox where you can experiment with patterns before they ever touch production code.

Debugging complex patterns. When a pattern matches too much or too little, stepping through it character by character in a tester is far faster than adding print statements to your application. You can see every match, capture group, and index in real time.

Validating before deploying. A malformed regex can cause silent data loss or, worse, catastrophic backtracking that freezes your server. Testing against a variety of sample inputs catches edge cases early.

Learning regex syntax. If you are new to regular expressions, a tester with live highlighting turns an abstract notation into something visual. You can tweak a quantifier or anchor and immediately see the effect.

Extracting data from text. Log files, CSV exports, and API responses often contain the data you need buried inside unstructured text. A regex tester lets you prototype extraction patterns and verify capture groups before writing the script that processes thousands of records.

Regex syntax quick reference

Below is a compact overview of the most frequently used regex constructs. This is not exhaustive, but it covers the patterns you will reach for in the vast majority of real-world tasks.

Character classes let you match a set of characters. [a-z] matches any lowercase letter, \d matches any digit (equivalent to [0-9]), \w matches word characters (letters, digits, and underscore), and \s matches whitespace.

Quantifiers control how many times a token must appear. * means zero or more, + means one or more, ? means zero or one, and {n,m} means between n and m times. Appending ? to any quantifier makes it lazy instead of greedy.

Anchors assert a position rather than matching a character. ^ matches the start of a line, $ matches the end, and \b matches a word boundary.

Groups and alternation. Parentheses (abc) create a capturing group. Use (?:abc) for a non-capturing group when you need grouping without extraction. The pipe | acts as an OR operator: cat|dog matches either word.

Lookaheads and lookbehinds. These are zero-width assertions that check what comes before or after the current position without consuming characters. (?=abc) is a positive lookahead, (?!abc) is a negative lookahead, (?<=abc) is a positive lookbehind, and (?<!abc) is a negative lookbehind.

Common regex patterns

These battle-tested patterns handle the most frequent validation and extraction tasks. Copy them into the tester above to experiment with your own test strings.

  • Email address: [a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,} matches most common email formats. For production use, consider the full RFC 5322 spec or use a dedicated validation library.
  • URL: https?:\/\/[^\s/$.?#].[^\s]* captures HTTP and HTTPS URLs from running text. It intentionally stays simple to avoid the complexity of a full URI parser.
  • IPv4 address: \b(?:\d{1,3}\.?){4}\b provides a quick structural match. For strict validation (each octet 0-255), a more verbose pattern or programmatic check is preferable.
  • Date (YYYY-MM-DD): \d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01]) matches ISO 8601 date strings with basic month and day range validation.
  • Phone number (US): (?:\+1[-.\s]?)?\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4} handles formats like +1 (555) 123-4567, 555.123.4567, and 5551234567.

Keep in mind that regex alone is rarely sufficient for full validation of emails, URLs, or phone numbers. These patterns are best used as a first pass before more rigorous checks.

Regex flags explained

Flags (also called modifiers) change how the regex engine interprets your pattern. In JavaScript, flags are appended after the closing delimiter, for example /pattern/gi.

  • g (global) — Find all matches in the string instead of stopping after the first one. Without this flag, methods like String.match() return only the first match.
  • i (case-insensitive) — Treat uppercase and lowercase letters as equivalent. /hello/i matches "Hello", "HELLO", and "hElLo".
  • m (multiline) — Makes ^ and $ match the start and end of each line rather than the start and end of the entire string.
  • s (dotAll) — By default, the dot . does not match newline characters. The s flag changes this so that . matches any character including \n.
  • u (unicode) — Enables full Unicode matching. Without it, patterns like . may not correctly handle characters outside the Basic Multilingual Plane (such as emoji or CJK supplementary characters). The u flag also makes quantifiers like {1,3} syntax-checked strictly, throwing errors on invalid patterns that would otherwise silently pass.

Related tools on CodeBoxTools

Regular expressions are often just one step in a larger workflow. These companion tools can help with the tasks that come before and after pattern matching.

  • JSON Formatter & Validator — Once you have extracted data with a regex, format it as clean JSON for API consumption or debugging.
  • Diff Checker — Compare the original text against the result of a regex replacement to verify your pattern changed exactly what you intended.
  • Slug Generator — Turn extracted titles or headings into URL-safe slugs, a common task after regex-based text extraction.

Frequently Asked Questions

Which regex flavor does this use?
This tool uses JavaScript's built-in RegExp engine. It supports all modern features including named capture groups (?), lookbehind (?<=), and Unicode property escapes (\p{}).
What do the flags mean?
g (global) finds all matches, i (case insensitive) ignores case, m (multiline) makes ^ and $ match line boundaries, and s (dotAll) makes . match newlines.
Is my test data kept private?
Yes. This tool runs entirely in your browser. Your regex patterns and test strings are never sent to any server.
Which regex flavor does it support?
JavaScript’s built-in regex engine (ECMA-262). This is close to but not identical to PCRE or Python’s `re` — lookbehinds, named groups, and Unicode escapes behave slightly differently. Test with your target language if you are porting a pattern.
What do the flags g, i, m, s, u mean?
`g` = global (find all matches), `i` = case-insensitive, `m` = multiline (`^` and `$` match line boundaries), `s` = dotall (`.` matches newlines), `u` = Unicode mode with full property support.
How do I inspect capture groups?
Wrap part of the pattern in `( )` to capture it. Named groups use `(?...)`. The tester displays each capture group’s value for every match, making it easy to see what you are extracting.

Related Tools