Я пытаюсь оценить строку по заданному списку параметров с помощью RegExp во Flutter. Например, строка должна содержать не менее:
- Одна заглавная буква
- Одна строчная буква
- Одно число от 0-9
- Один специальный символ, такой как $ или!
Это в основном для поля ввода пароля приложения. Я настроил все, сначала используя validateStructure
следующим образом:
abstract class PasswordValidator {
bool validateStructure(String value);
}
Затем я использовал функцию RegExp
следующим образом:
class PasswordValidatorSpecial implements PasswordValidator {
bool validateStructure(String value) {
String pattern =
r'^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[!@#\$&*~£]).{8,}$';
RegExp regEx = new RegExp(pattern);
return regEx.hasMatch(value);
}
}
Это работает хорошо, в некотором смысле, когда я передаю строку / пароль через него, он говорит мне, если хотя бы один из критериев не удовлетворен. Однако я хотел бы, чтобы выходные данные были более точными c, сообщая мне, какой из этих критериев не выполняется.
Например, если бы в пароле было все, кроме числа (от 0 до 9), я бы хотел получить вывод, в котором конкретно сказано, что число отсутствует, но все остальное присутствует.
Как мне адаптировать мой код, чтобы я мог это сделать? Возможно, я подумал, используя условное выражение «если», хотя я не знаю, как это будет работать. Спасибо!