Emails Validator

Simple and efficient email address validator for Dart. Validates email syntax without using regular expressions.

Live Demo

Try the interactive web demo: Live Demo

The demo allows you to test email validation in real-time with detailed debug information.

Features

  • ✅ Simple and clear validation logic
  • ✅ No external dependencies
  • ✅ Detailed debug information
  • ✅ Support for validating lists of email addresses
  • ✅ RFC standards compliance
  • ✅ High performance

Installation

Add the dependency to your pubspec.yaml:

dependencies:
  emails_validator: ^1.0.2

Then run:

dart pub get

Usage

Basic Validation

import 'package:emails_validator/emails_validator.dart';

void main() {
  // Validate single email
  final isValid = EmailsValidator.validate('[email protected]');
  print(isValid); // true
  
  // Validate invalid email
  final isInvalid = EmailsValidator.validate('invalid-email');
  print(isInvalid); // false
}

Validating List of Email Addresses

final emails = [
  '[email protected]',
  'invalid-email',
  '[email protected]',
  '@example.com',
];

// Get validation results for all emails
final results = EmailsValidator.validateList(emails);
// Result: {'[email protected]': true, 'invalid-email': false, ...}

// Get only valid emails
final validEmails = EmailsValidator.getValidEmails(emails);
// Result: ['[email protected]', '[email protected]']

// Get only invalid emails
final invalidEmails = EmailsValidator.getInvalidEmails(emails);
// Result: ['invalid-email', '@example.com']

Debug Information

The validator outputs detailed debug information to the console:

[DEBUG] EmailsValidator: Starting email validation: [email protected]
[DEBUG] EmailsValidator: Email after trim: "[email protected]"
[DEBUG] EmailsValidator: Local part: "user"
[DEBUG] EmailsValidator: Domain: "example.com"
[DEBUG] EmailsValidator: Email is valid!

Supported Formats

Valid Email Addresses

Invalid Email Addresses

Validation Rules

  1. General Rules:

    • Email cannot be null or empty
    • Minimum length: 5 characters
    • Maximum length: 254 characters
    • Must contain exactly one @ symbol
  2. Local Part (before @):

    • Cannot be empty
    • Maximum length: 64 characters
    • Allowed characters: letters, numbers, !#$%&'*+-/=?^_{|}~.`
    • Dot cannot be first or last character
  3. Domain (after @):

    • Cannot be empty
    • Maximum length: 253 characters
    • Must contain at least 2 parts (e.g., example.com)
    • Each part no longer than 63 characters
    • Allowed characters: letters, numbers, hyphen
    • Hyphen cannot be first or last character of part
    • Last part (TLD) minimum 1 character (e.g. test domains like .c)

Interactive Web Demo

The project includes a Flutter Web demo application that demonstrates the email validation functionality.

Testing

Run tests:

dart test

Performance

The validator is optimized for high performance:

  • No regular expressions used
  • Minimal string operations
  • Efficient character checking

License

MIT License

Libraries

emails_validator