isValidEmail
Validates whether a string is a valid email address.
1/**
2 * Validates whether a string is a valid email address.
3 *
4 * @param email - The email string to validate.
5 * @returns True if the email is valid, false otherwise.
6 */
7export function isValidEmail(email: string): boolean {
8 const emailRegex =
9 /^[^\s@]+@[^\s@]+\.[^\s@]{2,}$/;
10 return emailRegex.test(email);
11}
Lightweight Validation
Uses a simple, performant regular expression that covers the vast majority of valid email formats.
No Dependencies
Fully self-contained with no reliance on external libraries or frameworks.
Immediate Feedback
Returns a boolean result instantly, suitable for inline form validation or real-time checks.
Resistant to Common Errors
Prevents common invalid formats like missing domain parts, empty local names, or extra spaces.
Tests | Examples
1test('validates correct email addresses', () => {
2 expect(isValidEmail('test@example.com')).toBe(true);
3 expect(isValidEmail('user.name+tag+sorting@example.com')).toBe(true);
4 expect(isValidEmail('user_name@example.co.uk')).toBe(true);
5});
6
7test('invalidates incorrect email addresses', () => {
8 expect(isValidEmail('testexample.com')).toBe(false); // missing @
9 expect(isValidEmail('test@.com')).toBe(false); // domain missing
10 expect(isValidEmail('test@com')).toBe(false); // dot missing
11 expect(isValidEmail('test@com.')).toBe(false); // domain ends in dot
12 expect(isValidEmail('@example.com')).toBe(false); // missing local part
13});
14
15test('invalidates empty and whitespace-only strings', () => {
16 expect(isValidEmail('')).toBe(false);
17 expect(isValidEmail(' ')).toBe(false);
18});
Common Use Cases
Form Input Validation
Check whether user-provided emails in signup or contact forms meet syntactic criteria.
Client-Side Sanitization
Validate before submitting data to the backend to reduce unnecessary server load.
Conditional UI Feedback
Enable or disable submission buttons or display messages based on email validity.
Email-Based Feature Gates
Ensure valid emails are entered before triggering features like password reset, verification, or newsletter subscription.