Logo Wand.Tools

Regular Expression Generator

Intelligently generate and explain regular expressions, supporting various common pattern matching

Regular Expression Matching Email Addresses - Complete Tutorial

  # Regular Expression Matching Email Addresses - Complete Tutorial
  
  ## Basic Email Matching
  
  The simplest regex for email matching:
  ```regex
  \S+@\S+\.\S+

Matching examples:

Common Email Format Matching

Standard email format regex:

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

Features:

  • Allows uppercase and lowercase letters, numbers
  • Supports special characters like . _ % + -
  • Domain part must have at least 2 characters

Strict Email Validation

RFC 5322 standard regex:

^(?:[a-z0-9!#$%&'*+/=?^_\{|\}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_\{|\}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?: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]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])$

International Email Support

Regex supporting Unicode characters:

^[^\s@]+@[^\s@]+\.[^\s@]+$

Or a more precise version:

^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$

Regular Expression Breakdown

Taking the standard email regex as an example:

^                         # Start of string
[a-zA-Z0-9._%+-]+        # Username part
@                         # @ symbol
[a-zA-Z0-9.-]+           # Domain part
\.                        # Dot
[a-zA-Z]{2,}             # Top-Level Domain
$                         # End of string

Implementation Examples in Various Languages

JavaScript

const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;

Python

import re
email_regex = re.compile(r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$')

PHP

$emailRegex = '/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/';

Java

Pattern emailPattern = Pattern.compile("^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$");

Frequently Asked Questions

1. How to match email addresses with IP addresses?

^[a-z0-9._%+-]+@([0-9]{1,3}\.){3}[0-9]{1,3}$

2. How to match email addresses with port numbers?

^[a-z0-9._%+-]+@[a-z0-9.-]+:\d+$

3. How to exclude email addresses from specific domains?

^(?!.*@(spamdomain|blocked)\.com$)[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$

Performance Optimization

  1. Use non-capturing groups (?:) instead of capturing groups ().
  2. Avoid overly complex nested structures.
  3. Perform basic validation on the web frontend first.
  4. Pre-compile regular expressions for high-frequency use cases.
^(?=[a-z0-9@.!#$%&'*+/=?^_\{|\}~-]{6,254}$)[a-z0-9._%+-]{1,64}@(?:[a-z0-9-]{1,63}\.){1,8}[a-z]{2,63}$