Validate Email in JavaScript
Serhii Shramko /
function isValidEmail(email: string): boolean {
// [RFC 5321] https://datatracker.ietf.org/doc/html/rfc5321
const MAX_EMAIL_LENGTH = 254;
const isInvalidInput = !email ||
email.length === 0 ||
email.length > MAX_EMAIL_LENGTH;
if (isInvalidInput) return false;
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
return emailRegex.test(email);
}
Usage example
// Valid cases ✅
console.log(isValidEmail('user@example.com'));
console.log(isValidEmail('multiple@dots.co.uk'));
console.log(isValidEmail('name+tag@example.com'));
// Invalid cases ❌
console.log(isValidEmail('')); // - empty string
console.log(isValidEmail(null as any)); // false - null input
console.log(isValidEmail(undefined as any)); // false - undefined input
console.log(isValidEmail('a'.repeat(255))); // false - exceeds max length (RFC 5321)
console.log(isValidEmail('invalid.email@com')); // false - incomplete domain
console.log(isValidEmail('no@dots')); // false - missing TLD
console.log(isValidEmail('spaces in@email.com')); // false - contains spaces