J'essaie d'écrire un programme qui utilise des expressions régulières pour s'assurer que la chaîne de mots de passe qui lui est transmise est forte. Un mot de passe fort est défini comme étant un mot de passe d'au moins huit caractères, contenant à la fois des majuscules et des minuscules, et comportant au moins un chiffre. Pour l'instant, j'ai le code suivant. J'ai passé des heures à bricoler l'expression régulière, mais je n'arrive pas à la faire passer. Chaque fois que je fais un changement, il semble qu'un mot de passe fort soit marqué comme faible, ou un faible comme fort. Avez-vous une idée de la façon dont je peux améliorer cela ?
import re
pass2Regex = re.compile(r'''
\d*
[a-zA-Z]*
\d*
[a-zA-Z]*
''',re.VERBOSE)
text = raw_input("enter your password\n")
if len(text) >= 8:
search = pass2Regex.findall(text)
if text in search:
print "%s is a strong password" % (text)
else:
print "%s is a weak password" % (text)
else:
print "%s is a weak password" % (text)
Par exemple, actuellement, si le mot de passe était "231242441", il serait marqué comme un mot de passe fort même s'il ne contient pas de lettres. De plus, lorsque j'essaie un + au lieu d'un *, il n'accepte que les mots de passe qui commencent par un chiffre, etc.
Merci pour votre aide