🔍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 NoneTry 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