/// 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; } }