Je suis en train d'obtenir un regex pour les conditions suivantes:Problème avec la combinaison multiple regex lookahead en Python
Valider ID de l'utilisateur avec les conditions suivantes:
- Il doit contenir au moins 2 caractères de l'alphabet anglais en majuscules .
- Il doit contenir au moins 3 chiffres
- Il ne doit contenir que des caractères alphanumériques
- Aucun personnage doit se répéter.
- Il doit y avoir exactement 10 caractères dans un UID valide.
Le Regex qui fonctionne quand je mets vérifier séparément, mais combinés:
^(?=[a-zA-Z0-9]{10}$).*?(?=[A-Z][^A-Z]*?[A-Z]).*?(?=\d\D*?\d\D*?\d).*
Quelqu'un pourrait-il s'il vous plaît expliquer pourquoi cela ne fonctionne pas?
travail une fois mis chaque condition séparée:
a. re.findall(r'^(?=[a-zA-Z0-9]{10}$)', inp)
b. re.findall(r'(?=[A-Z][^A-Z]*?[A-Z])', inp)
...
Quelle serait la bonne sortie pour __AT934j3Cn8__? Celui-là devrait aller bien. Cependant, essayez re.compile (r '^ (? = [A-zA-Z0-9] {10} $) | (? = [AZ] [^ AZ]? [AZ]) | (? = \ D \ D? \ D \ D *? \ D). * ') – anki
* Aucun caractère ne doit répéter. * Dans la chaîne entière ou juste l'un à côté de l'autre? – dawg
Ce n'est pas un bon problème à résoudre avec des expressions régulières. Lors de la vérification d'un caractère spécifique, votre programme doit "se souvenir" de trop de choses ("ce caractère était-il déjà utilisé, ai-je déjà une autre majuscule?" Etc.) Les expressions régulières ne vérifient pas les occurrences de valeurs précédentes. Je voudrais essayer une autre approche (par exemple, compter manuellement les caractères dans les dictionnaires.) – brandizzi