C'est tout à fait possible ...
J'ai développé en son temps une fonction qui génère un mot de passe en tenant compte de divers critères ( Longueur, Premier caractère, nb Maj, NbMin, NbNum, NbSpec, ... )
Le fait de prendre en compte tout les critères risque de rendre ta fonction assez long +- 300 lignes ;-)