validate method
Validates a given input
against the parameters defined at creation
Returns a Set of Rule
s that are not matching
if it returns an empty set it means that the input
is satisfying all specified rules
Implementation
Set<Rule> validate(String input) {
final errors = <Rule>{};
for (final rule in _rules.entries) {
bool matching = false;
switch (rule.key) {
case Rule.uppercaseLetters:
final regExp = RegExp(r'[A-Z]{1}');
matching = regExp.allMatches(input).length >= rule.value;
break;
case Rule.lowercaseLetters:
final regExp = RegExp(r'[a-z]{1}');
matching = regExp.allMatches(input).length >= rule.value;
break;
case Rule.minLength:
matching = input.length >= rule.value;
break;
case Rule.maxLength:
matching = input.length <= rule.value;
break;
case Rule.digits:
final regExp = RegExp(r'[0-9]{1}');
matching = regExp.allMatches(input).length >= rule.value;
break;
case Rule.specialCharacters:
final regExp = RegExp(r'[-+_!@#$%^&*:;.,?⁄€‹›`°…]{1}');
matching = regExp.allMatches(input).length >= rule.value;
break;
}
if (!matching) {
errors.add(rule.key);
}
}
return errors;
}