DEV Community

楊東霖
楊東霖

Posted on • Originally published at devplaybook.cc

Regex Tester Online: Test, Debug & Learn Regular Expressions Instantly

Regex Tester Online: Test, Debug & Learn Regular Expressions Instantly

Writing a regular expression from scratch and hoping it works is a recipe for hours of frustration. A regex tester online lets you write, test, and iterate against real input immediately — no console.log, no guessing, no deploy cycle.

This guide covers what to look for in a regex tester, how to write common patterns, and where each tool fits in your workflow.


What Makes a Good Online Regex Tester?

Not all regex testers are equal. The best ones offer:

  • Real-time match highlighting — see what matches as you type
  • Multi-language support — JavaScript, Python, PCRE, Ruby
  • Group capture display — numbered and named capture groups shown clearly
  • Match count — how many matches, with position info
  • Explanation panel — breaks down what each part of the pattern does
  • Test multiple strings — validate against several inputs at once

DevPlaybook Regex Tester →


Regex Syntax Quick Reference

Character Classes

Pattern Matches
\d Any digit (0–9)
\w Word character (a-z, A-Z, 0-9, _)
\s Whitespace (space, tab, newline)
[aeiou] Any vowel
[^aeiou] Any non-vowel
[a-z] Lowercase a through z

Quantifiers

Pattern Meaning
* 0 or more
+ 1 or more
? 0 or 1 (optional)
{3} Exactly 3 times
{2,5} Between 2 and 5 times
{3,} 3 or more times

Anchors and Boundaries

Pattern Meaning
^ Start of string/line
$ End of string/line
\b Word boundary
\B Not a word boundary

10 Practical Regex Patterns Every Developer Needs

1. Email Validation

^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
Enter fullscreen mode Exit fullscreen mode

Matches: user@example.com, first.last+tag@subdomain.io
Doesn't match: @missing.com, no-at-sign

2. URL Detection

https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&/=]*)
Enter fullscreen mode Exit fullscreen mode

3. IPv4 Address

^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$
Enter fullscreen mode Exit fullscreen mode

4. Phone Number (US)

^(\+1\s?)?(\(?\d{3}\)?[\s\-.]?)\d{3}[\s\-.]?\d{4}$
Enter fullscreen mode Exit fullscreen mode

5. Strong Password

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$
Enter fullscreen mode Exit fullscreen mode

Requires: 8+ chars, uppercase, lowercase, digit, special character.

6. ISO 8601 Date

^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[+-]\d{2}:\d{2})?)?$
Enter fullscreen mode Exit fullscreen mode

7. Credit Card (Basic Luhn-safe format check)

^4[0-9]{12}(?:[0-9]{3})?$   # Visa
^5[1-5][0-9]{14}$            # Mastercard
^3[47][0-9]{13}$             # Amex
Enter fullscreen mode Exit fullscreen mode

8. HTML Tag Stripper

<[^>]*>
Enter fullscreen mode Exit fullscreen mode

Replace with empty string to strip HTML tags from content.

9. Extract Query String Values

[?&](\w+)=([^&#]*)
Enter fullscreen mode Exit fullscreen mode

10. Semantic Version

^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(-[a-zA-Z0-9.-]+)?(\+[a-zA-Z0-9.-]+)?$
Enter fullscreen mode Exit fullscreen mode

How to Use a Regex Tester Effectively

Step 1: Start With a Known-Good Test String

Before writing the pattern, write down an example string that should match, and one that shouldn't.

Should match:    user@example.com
Should NOT match: not-an-email
Enter fullscreen mode Exit fullscreen mode

Step 2: Build the Pattern Incrementally

Start simple, then add constraints:

.+        → matches anything (too broad)
.+@.+     → needs @ sign
.+@.+\..+ → needs a dot after @
Enter fullscreen mode Exit fullscreen mode

Step 3: Test Edge Cases

  • Empty string
  • Strings with special characters
  • Very long inputs
  • Unicode characters

Step 4: Enable Flags

Flag Meaning
i Case-insensitive
g Global (find all matches)
m Multiline (^ and $ match per-line)
s Dotall (. matches newlines)

JavaScript Regex Examples

// Test a regex
const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
console.log(emailRegex.test("user@example.com")); // true

// Extract matches
const str = "Contact us at help@example.com or sales@company.org";
const emails = str.match(/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g);
// ["help@example.com", "sales@company.org"]

// Named capture groups
const dateStr = "2026-03-24";
const { groups } = dateStr.match(/(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/);
console.log(groups.year);  // "2026"
console.log(groups.month); // "03"
Enter fullscreen mode Exit fullscreen mode

Python Regex Examples

import re

# Match and extract
pattern = r'^(\w+)\s(\w+)$'
match = re.match(pattern, "John Smith")
if match:
    print(match.group(1))  # "John"
    print(match.group(2))  # "Smith"

# Find all matches
text = "Prices: $10.99, $5.50, $299.00"
prices = re.findall(r'\$(\d+\.\d{2})', text)
# ["10.99", "5.50", "299.00"]

# Substitute
clean = re.sub(r'<[^>]+>', '', "<b>Hello</b> <i>World</i>")
# "Hello World"
Enter fullscreen mode Exit fullscreen mode

Common Regex Mistakes

1. Greedy vs. lazy matching

<.+>    → matches from first < to LAST >  (greedy)
<.+?>   → matches from < to nearest >     (lazy)
Enter fullscreen mode Exit fullscreen mode

2. Forgetting to escape special characters

Characters that need escaping: . ^ $ * + ? { } [ ] \ | ( )

3. Using . when you mean [^\n]

In most engines, . doesn't match newlines by default.

4. Not anchoring when you should

\d+ matches the digits inside abc123def. Use ^\d+$ to match digit-only strings.


Related Tools


Conclusion

A regex tester online is an essential part of every developer's toolkit. Instead of debugging patterns in production code, test interactively, catch edge cases early, and ship with confidence.

Open the DevPlaybook Regex Tester →


Level Up Your Dev Workflow

Found this useful? Explore DevPlaybook — cheat sheets, tool comparisons, and hands-on guides for modern developers.

🛒 Get the DevToolkit Starter Kit on Gumroad — 40+ browser-based dev tools, source code + deployment guide included.

Top comments (0)