emails_validator 1.0.2
Simple and efficient email address validator for Dart. Validates email syntax without using regular expressions, following RFC standards with detailed debug information.
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('user@example.com');
print(isValid); // true
// Validate invalid email
final isInvalid = EmailsValidator.validate('invalid-email');
print(isInvalid); // false
}
Validating List of Email Addresses
final emails = [
'user@example.com',
'invalid-email',
'test@domain.co.uk',
'@example.com',
];
// Get validation results for all emails
final results = EmailsValidator.validateList(emails);
// Result: {'user@example.com': true, 'invalid-email': false, ...}
// Get only valid emails
final validEmails = EmailsValidator.getValidEmails(emails);
// Result: ['user@example.com', 'test@domain.co.uk']
// 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: user@example.com
[DEBUG] EmailsValidator: Email after trim: "user@example.com"
[DEBUG] EmailsValidator: Local part: "user"
[DEBUG] EmailsValidator: Domain: "example.com"
[DEBUG] EmailsValidator: Email is valid!
Supported Formats
Valid Email Addresses
user@example.comtest.email@domain.co.ukuser+tag@example.orguser.name@example.comuser_name@example.comuser-name@example.comuser123@example.comuser@subdomain.example.com
Invalid Email Addresses
invalid-email(no @)@example.com(@ at beginning)user@(no domain)user@.com(empty domain part)user..name@example.com(consecutive dots)user@-example.com(hyphen at beginning of domain)user@example-.com(hyphen at end of domain)
Validation Rules
-
General Rules:
- Email cannot be null or empty
- Minimum length: 5 characters
- Maximum length: 254 characters
- Must contain exactly one @ symbol
-
Local Part (before @):
- Cannot be empty
- Maximum length: 64 characters
- Allowed characters: letters, numbers,
!#$%&'*+-/=?^_{|}~.` - Dot cannot be first or last character
-
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