diff --git a/lib/src/validations/valid_email_validation.dart b/lib/src/validations/valid_email_validation.dart index 8ec5946..34e5b1b 100644 --- a/lib/src/validations/valid_email_validation.dart +++ b/lib/src/validations/valid_email_validation.dart @@ -25,7 +25,7 @@ extension ValidEmailValidation on SimpleValidationBuilder { SimpleValidationBuilder validEmail({String? message, String? code}) { return useValidation( (value, entity) => - RegExp(r'^[\w\.-]+@[a-zA-Z\d\.-]+\.[a-zA-Z]{2,}$').hasMatch(value), + RegExp(r'^[\w\.-]+@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$').hasMatch(value), code: code ?? Language.code.validEmail, message: message, ); @@ -54,7 +54,7 @@ extension ValidEmailNullableValidation on SimpleValidationBuilder { return useValidation( (value, entity) => value != null && - RegExp(r'^[\w\.-]+@[a-zA-Z\d\.-]+\.[a-zA-Z]{2,}$').hasMatch(value), + RegExp(r'^[\w\.-]+@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$').hasMatch(value), code: code ?? Language.code.validEmail, message: message, ); @@ -84,7 +84,7 @@ extension ValidEmailOrNullableValidation on SimpleValidationBuilder { return useValidation( (value, entity) => value == null || - RegExp(r'^[\w\.-]+@[a-zA-Z\d\.-]+\.[a-zA-Z]{2,}$').hasMatch(value), + RegExp(r'^[\w\.-]+@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$').hasMatch(value), code: code ?? Language.code.validEmail, message: message, ); diff --git a/test/src/validations/valid_email_validation_test.dart b/test/src/validations/valid_email_validation_test.dart index 9654895..f20d713 100644 --- a/test/src/validations/valid_email_validation_test.dart +++ b/test/src/validations/valid_email_validation_test.dart @@ -37,4 +37,24 @@ void main() { expect(result.isValid, true); }); + + test('valid email validation...', () { + final validator = TestLucidValidator(); + + validator + .ruleFor((e) => e.email, key: 'email', label: 'E-mail') // + .validEmail(); + + final user = UserModel()..email = 'test@.123.com'; + + final result = validator.validate(user); + + expect(result.isValid, false); + + expect(result.exceptions.length, 1); + + final error = result.exceptions.first; + + expect(error.message, "'E-mail' is not a valid email address."); + }); }