С помощью регулярных выражений определить корректность введенных паролей
Задание: "С помощью регулярных выражений определить корректность введенных паролей. Требования для паролей: пароль должен содержать только буквы латинского алфавита (строчный или прописные) и цифры. Пробелы, подчеркивания и другие знаки препинания не допускаются".
Я написал функцию, которая проверяет пароли на корректность с помощью регулярок, однако она не учитывает условие, что цифры должны быть обязательно. Я пока только начинаю разбираться с регулярными выражениями, поэтому не до конца понимаю, как исправить свою ошибку. Буду очень признателен за помощь в решении.
//проверка паролей с помощью регулярного выражения
std::vector<bool> regexp(const std::vector<std::string> password) {
std::vector<bool> correct(password.size());
std::regex e("^[a-zA-Z0-9]+$");
for (size_t i = 0; i < password.size(); ++i) {
correct[i] = std::regex_search(password[i], e);
}
return correct;
}
Ответы (1 шт):
Ну... можно так:
std::vector<bool> regexp(const std::vector<std::string>& password) {
std::vector<bool> correct(password.size());
static std::regex e("[a-zA-Z]*[0-9][0-9a-zA-Z]*");
for (size_t i = 0; i < password.size(); ++i) {
correct[i] = std::regex_match(password[i],e);
}
return correct;
}
Правда, одни только цифры - допустимый пароль. Но вы ведь требовали в обязательном порядке только цифры, но не буквы?...
P.S. Допускаю наличие куда более короткого и красивого решения, но что-то сразу в голову не приходит.
P.P.S. Спасибо Fat-Zer за подправленный ответ.