23 lines
663 B
Dart
23 lines
663 B
Dart
/// Fehler der E-Mail-Adresse.
|
|
enum EmailError { empty, invalid }
|
|
|
|
/// Einfache Syntaxprüfung (Feinprüfung macht der Server): ein `@`, Text davor,
|
|
/// ein Punkt im Domänenteil, kein Leerraum.
|
|
abstract final class EmailFormat {
|
|
static const maxLength = 254;
|
|
|
|
static final _pattern = RegExp(r'^[^\s@]+@[^\s@.]+(\.[^\s@.]+)+$');
|
|
|
|
static String normalize(String value) => value.trim();
|
|
|
|
static EmailError? validate(String value) {
|
|
final email = normalize(value);
|
|
if (email.isEmpty) {
|
|
return EmailError.empty;
|
|
}
|
|
if (email.length > maxLength || !_pattern.hasMatch(email)) {
|
|
return EmailError.invalid;
|
|
}
|
|
return null;
|
|
}
|
|
}
|