С помощью регулярных выражений определить корректность введенных паролей

Задание: "С помощью регулярных выражений определить корректность введенных паролей. Требования для паролей: пароль должен содержать только буквы латинского алфавита (строчный или прописные) и цифры. Пробелы, подчеркивания и другие знаки препинания не допускаются".

Я написал функцию, которая проверяет пароли на корректность с помощью регулярок, однако она не учитывает условие, что цифры должны быть обязательно. Я пока только начинаю разбираться с регулярными выражениями, поэтому не до конца понимаю, как исправить свою ошибку. Буду очень признателен за помощь в решении.

//проверка паролей с помощью регулярного выражения
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 шт):

Автор решения: Harry

Ну... можно так:

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 за подправленный ответ.

→ Ссылка