-3
votes

Python Vérification des noms d'utilisateur avec des expressions régulières

J'ai une tâche dont j'ai besoin d'aide. La tâche consiste à créer un script Python qui demande à l'utilisateur de saisir un nom d'utilisateur souhaité. Le nom d'utilisateur doit être comme suit: "A11AAAAA". Donc, commencer par une lettre, 2x chiffres, 5x lettres. C'est la règle de la manière dont le nom d'utilisateur doit regarder et si l'entrée donnée ne correspond pas à cela, l'utilisateur doit être en mesure d'essayer à nouveau jusqu'à ce que cela soit correct. Reconnaissant pour toute aide!


2 commentaires

Essayez cette regex ^ \ w \ d {2} \ w {5} $


S'il vous plaît voir: Pourquoi "peut-il m'aider quelqu'un?" pas une question réelle?


4 Réponses :


0
votes
^\w{2}\d{2}\w{5}$   
You can use this handy site to experiment with regex: https://regex101.com/

0 commentaires

0
votes

Vous pouvez faire quelque chose comme ça:

import re

while True:
    name = input('Enter your name')
    if re.match('^\w\d{2}\w{5}$', name):
        break


0 commentaires

0
votes

Essayez celui-ci:

import re

uname = input("Enter your username: ")
regex = re.compile(r"^[A-Za-z]{1}\d{2}[A-Za-z]{5}$")
if regex.findall(uname):
    print ("Valid username")
else:
    print ("Invalid username")


2 commentaires

Essayé cela, mais je peux toujours entrer par exemple: A18AAAA1, et je reçois toujours "nom d'utilisateur valide".


J'ai édité la regex, mais elle accueille la lettre majuscule. Si vous souhaitez ignorer la lettre majuscule, changez [a-za-z] sur [a-z]



0
votes

Comme je l'ai récemment appris d'un autre utilisateur, \ w comprend \ d . Par conséquent, '^ \ w \ d {2} \ w {5} $' , comme suggéré par certains utilisateurs ici, correspondra, par exemple, 12345678 .

Pour résoudre ce problème, spécifiez simplement la classe de caractères explicitement: xxx


0 commentaires