Home/Blog/Article
Developer Tools

25 Regex Patterns Every Developer Should Know

June 25, 202612 min read min readByAarav Mehta·Developer Tools Editor·Jun 2026
25 Regex Patterns Every Developer Should Know
In this article
  1. 1. Data Input Validation Patterns
  2. 1. Standard RFC 5322 Email Address
  3. 2. Strong Password Complexity
  4. 3. Username Validation
  5. 4. Credit Card Number (Major Networks)
  6. 5. E.164 International Phone Number
  7. 6. US ZIP Code
  8. 2. Web and Network Parsing Patterns
  9. 7. Clean HTTP/HTTPS URL
  10. 8. IPv4 Address Validation
  11. 9. IPv6 Address (Standard Format)
  12. 10. MAC Address
  13. 11. Domain Extraction from URL
  14. 12. Standard HTML Tags
  15. 13. Anchor Tag URL (`href`) Extraction
  16. 3. Dates, Times, and Numbers
  17. 14. ISO Date (YYYY-MM-DD)
  18. 15. Localized Date (DD/MM/YYYY)
  19. 16. Time in 24-Hour Format
  20. 17. Time in 12-Hour Format (AM/PM)
  21. 18. Currency (USD Format)
  22. 19. Integers (Positive/Negative)
  23. 20. Floats and Decimals
  24. 4. String and Text Manipulation
  25. 21. Hex Color Codes
  26. 22. Common File Extensions
  27. 23. Duplicate Words (Double Typing)
  28. 24. Blank / White-space Only Strings
  29. 25. Text Extract Between Quotes
  30. Frequently Asked Questions (FAQ)
  31. Are these regex patterns compatible with Go?
  32. How do I use a regex pattern in JavaScript vs. Python?
  33. Why do some regex patterns start with `^` and end with `$`?
  34. Can these patterns cause server lag (ReDoS)?
  35. Where can I debug or modify these patterns interactively?
  36. Streamline Your Codebase

Early in my career, I was helping migrate a massive SQL database containing over two million legacy user records. The profile formats were completely inconsistent: some phone numbers had country codes and hyphens, others were raw digits, and a significant portion of the email fields contained trailing whitespaces or syntax typos.

Instead of writing custom parsing functions in Python for every single field, we built a migration script powered by a collection of vetted, robust regular expressions. The migration, which was scheduled to take a full weekend, was completed in less than three hours.

You don't need to be a regular expression theorist to be an efficient developer. You just need to know where to find the right pattern when a validation or extraction task lands on your desk.

Below is the definitive library of the 25 most common, production-ready regex patterns every developer will eventually need, broken down by category. You can copy and test any of these patterns instantly using our Interactive Regex Tester.


1. Data Input Validation Patterns

These patterns validate user input at the boundaries of your application, ensuring database integrity.

1. Standard RFC 5322 Email Address

^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
  • Matches: user.name+tag@sub.domain.co.uk, hello_world@gmail.com
  • Rejects: user@domain (no TLD), @domain.com (missing local part)
  • How it works: Matches alphanumeric characters and common symbols, followed by @, then a domain name, and a TLD of at least two letters.

2. Strong Password Complexity

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$
  • Matches: StrongP@ss123, aB1!cDeFgH
  • Rejects: weakpass (no uppercase/digit/symbol), ALLCAPS123! (no lowercase)
  • How it works: Uses positive lookaheads to assert the presence of at least one lowercase letter, one uppercase letter, one digit, and one special character, with a minimum length of 8 characters.

3. Username Validation

^[a-zA-Z0-9_-]{3,16}$
  • Matches: dev_user123, john-doe
  • Rejects: ab (too short), thisusernameiswaytoolong (over 16 characters), user@name (invalid character)
  • How it works: Restricts characters to alphanumeric, underscores, and hyphens, enforcing a strict length of 3 to 16 characters.

4. Credit Card Number (Major Networks)

^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|3[47][0-9]{13}|6(?:011|5[0-9][0-9])[0-9]{12})$
  • Matches: Visa, Mastercard, American Express, and Discover formats.
  • Rejects: Arbitrary 16-digit strings that do not start with valid major network prefixes.
  • How it works: Checks the leading digits (e.g., 4 for Visa, 51-55 for Mastercard) and verifies the corresponding card length.

5. E.164 International Phone Number

^\+[1-9]\d{1,14}$
  • Matches: +15551234567, +442079460192
  • Rejects: 0015551234567 (missing +), +1555123456789012 (too long)
  • How it works: Asserts a leading + symbol followed by a non-zero country code, allowing up to 15 total digits.

6. US ZIP Code

^\d{5}(?:[-\s]\d{4})?$
  • Matches: 90210, 12345-6789
  • Rejects: 1234 (too short), abcde (non-numeric)
  • How it works: Matches exactly 5 digits, with an optional trailing group of a hyphen or space and 4 extra digits.

2. Web and Network Parsing Patterns

Essential tools for network engineering, logging, and data scraping.

7. Clean HTTP/HTTPS URL

^https?:\/\/(?:www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b(?:[-a-zA-Z0-9()@:%_\+.~#?&\/=]*)$
  • Matches: https://fluxtoolkit.com/regex-tester?flag=g, http://www.domain.org
  • Rejects: ftp://domain.com (invalid protocol), domain.com (missing protocol)
  • How it works: Validates protocol, domain format, TLD length, and matches trailing paths or query strings.

8. IPv4 Address Validation

^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
  • Matches: 192.168.1.1, 255.255.255.0
  • Rejects: 256.0.0.1 (octet out of range), 192.168.1 (missing octet)
  • How it works: Ensures each of the 4 dot-separated segments is a numeric value between 0 and 255.

9. IPv6 Address (Standard Format)

^(?:[A-F0-9]{1,4}:){7}[A-F0-9]{1,4}$
  • Matches: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
  • Rejects: 2001:db8::1 (this basic pattern requires full colon structure; use advanced patterns for compressed IPv6).
  • How it works: Matches 8 groups of 1 to 4 hexadecimal characters separated by colons.

10. MAC Address

^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$
  • Matches: 00:1A:2B:3C:4D:5E, 00-1A-2B-3C-4D-5E
  • Rejects: 001A2B3C4D5E (missing separators), 00:1A:2B:3C:4D (too short)
  • How it works: Matches 6 groups of 2 hexadecimal digits separated by colons or hyphens.

11. Domain Extraction from URL

^(?:https?:\/\/)?(?:[^@\n]+@)?(?:www\.)?([^:\/\n?]+)
  • Matches: https://sub.domain.com/path -> extracts sub.domain.com
  • How it works: Bypasses protocols, logins, and subdomains, capturing the host domain segment.

12. Standard HTML Tags

<\/?[\w\s="/.':;#-\/\?]+>
  • Matches: <div>, </span >, <a href="https://site.com">
  • Rejects: text content, value < 10
  • How it works: Matches the opening/closing angled brackets enclosing standard tag descriptors and attributes.

13. Anchor Tag URL (`href`) Extraction

<a\s+(?:[^>]*?\s+)?href=(["'])(.*?)\1
  • Input String: <a class="btn" href="https://fluxtoolkit.com">Link</a>
  • Capture Group 2: https://fluxtoolkit.com
  • How it works: Finds anchor tags and extracts the URL within quotes matching the opening delimiter.

3. Dates, Times, and Numbers

Parsing logs or managing localized dates requires strict numerical matching.

14. ISO Date (YYYY-MM-DD)

^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$
  • Matches: 2026-07-15, 1999-12-31
  • Rejects: 2026-13-45 (invalid month/day)
  • How it works: Matches a 4-digit year, a month from 01 to 12, and a day from 01 to 31.

15. Localized Date (DD/MM/YYYY)

^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d$
  • Matches: 15/07/2026, 31-12-1999
  • Rejects: 45/07/2026 (invalid day)
  • How it works: Validates day, month, and 4-digit years starting with 19 or 20.

16. Time in 24-Hour Format

^(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$
  • Matches: 08:30, 23:59
  • Rejects: 24:00 (hour out of range), 8:30 (missing leading zero)
  • How it works: Ensures hours are between 00 and 23, and minutes are between 00 and 59.

17. Time in 12-Hour Format (AM/PM)

^(0?[1-9]|1[0-2]):[0-5][0-9]\s?(AM|PM|am|pm)$
  • Matches: 9:30 AM, 12:45 pm
  • Rejects: 13:00 PM (hour out of range)
  • How it works: Restricts hours to 1–12 and matches the AM/PM suffix.

18. Currency (USD Format)

^\$?\d+(,\d{3})*(\.\d{2})?$
  • Matches: $1,250.50, 100, $50.00
  • Rejects: $10,00 (comma in wrong place), $100.5 (only one decimal digit)
  • How it works: Validates optional $, comma separators every 3 digits, and optional decimal cents.

19. Integers (Positive/Negative)

^-?\d+$
  • Matches: 42, -105, 0
  • Rejects: 3.14 (contains decimal)
  • How it works: Matches an optional negative sign followed by one or more digits.

20. Floats and Decimals

^-?\d*\.\d+$
  • Matches: 3.14159, -.5, 0.0
  • Rejects: 100 (missing decimal part)
  • How it works: Requires a literal dot and digits after it.

4. String and Text Manipulation

These patterns are perfect for text sanitization, formatting, and data cleansing.

21. Hex Color Codes

^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$
  • Matches: #ffffff, F00, #3A3
  • Rejects: #ffff (invalid length)
  • How it works: Matches an optional # symbol followed by either 3 or 6 hex characters.

22. Common File Extensions

^.*\.(jpg|jpeg|png|gif|pdf|docx)$
  • Matches: profile.png, document.pdf
  • Rejects: index.html (extension not in defined list)
  • How it works: Extracts files ending in the specified allowed file formats.

23. Duplicate Words (Double Typing)

\b(\w+)\s+\1\b
  • Matches: the the, error error
  • Rejects: the then (different words)
  • How it works: Uses a backreference (\1) to match any word followed by whitespace and the exact same word.

24. Blank / White-space Only Strings

^\s*$
  • Matches: , \n\t
  • Rejects: a (contains letter)
  • How it works: Asserts that the string consists exclusively of spaces, tabs, or newlines.

25. Text Extract Between Quotes

(["'])(?:(?=(\\?))\2.)*?\1
  • Matches: "hello world", 'single quotes'
  • How it works: Captures text between double or single quotes, supporting escaped quote characters inside the text.

Frequently Asked Questions (FAQ)

Are these regex patterns compatible with Go?

Most are. However, Go's standard library regexp package (RE2 engine) does not support zero-width lookarounds (like the password complexity pattern (?=...) or the keep operator \K). To validate complex passwords in Go, evaluate the criteria using separate standard match loops instead of a single regex.

How do I use a regex pattern in JavaScript vs. Python?

In JavaScript, you declare regular expressions using slash literals: const rx = /^[0-9]+$/;. In Python, you pass a raw string to the re module: re.match(r"^[0-9]+$", test_string). The r prefix in Python is crucial to prevent the interpreter from parsing backslashes as string escape codes.

Why do some regex patterns start with `^` and end with `$`?

The ^ symbol matches the absolute start of a string, and $ matches the absolute end. Including both anchors forces the engine to validate the entire string. If you remove the anchors, the regex will return true if any part of the string contains a match.

Can these patterns cause server lag (ReDoS)?

The simpler patterns (like username or hex validation) are completely safe. However, patterns that contain multiple optional wildcards (like URL validation) can suffer from catastrophic backtracking if evaluated against very long, malformed strings. Always enforce maximum length limits on input fields before running regex validation.

Where can I debug or modify these patterns interactively?

You can copy any of these expressions and test them against custom data in our Interactive Regex Sandbox. The tester provides visual capture group highlights and helps identify syntax issues immediately.


Streamline Your Codebase

Regular expressions are the Swiss Army knife of text processing. Keeping a verified, clean collection of standard patterns on hand prevents you from rewriting standard validation rules from scratch and reduces the risk of regex bugs.

Ready to test one of these patterns? Head over to the Interactive Regex Sandbox to verify your modifications in real-time.

Aarav MehtaDeveloper Tools Editor

Aarav writes practical guides for developers and technical users, focusing on browser-based utilities, data formatting, API workflows, security basics, and privacy-first developer tools.

Developer ToolsAPIsJSONRegexBase64UUIDSecurity Tools
View all articles