🔍Regex Recipes

Email Validation (Strict)

Practical strict email validation pattern that balances real-world usage with RFC compliance.

Pattern

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

Explanation

This pattern validates common email formats. Note: Real email validation requires checking deliverability via SMTP.

Examples

Valid
Input
user@example.com
Output
✓ Match
Valid with subdomain
Input
user@mail.example.com
Output
✓ Match
Valid with plus
Input
user+tag@example.com
Output
✓ Match
Invalid - no domain
Input
user@
Output
✗ No match
Invalid - missing @
Input
userexample.com
Output
✗ No match

Code Examples

JavaScript
const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
const isValid = emailRegex.test('user@example.com'); // true
Python
import re
email_pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
is_valid = re.match(email_pattern, 'user@example.com') is not None

Try it Now

💡 Tips

  • Always send verification emails instead of relying solely on regex
  • Consider using a dedicated email validation library for production
  • Use case-insensitive flag for email validation

⚠️ Common Pitfalls

  • Does not validate actual email deliverability
  • May reject some valid but uncommon email formats
  • International domain names (IDN) require punycode conversion