validate method

Set<Rule> validate(
  1. String input
)

Validates a given input against the parameters defined at creation Returns a Set of Rules 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;
}