2 votes

Besoin d'un RegExpr correspondant à un groupe de 8 éléments contenant 2+ majuscules, 2+ minuscules et 1+ chiffre.

J'essaie de créer un filtre anti-spam utilisant des expressions régulières qui correspondent à la situation suivante.

  • Il y a un groupe d'exactement 8 caractères alphanumériques à faire correspondre.
  • Il doit contenir 2 lettres majuscules ou plus ;
  • ET il doit contenir 2 lettres minuscules ou plus ;
  • ET il doit contenir un ou plusieurs chiffres.

Jusqu'à présent, tout ce que j'ai pu trouver, c'est ça :

(?i)[A-Za-z0-9]{8}

Mon code fait correspondre un groupe de 8 majuscules et minuscules, mais il ne force pas les majuscules ou les minuscules et ne précise pas combien de fois chaque type doit apparaître. Je le couple donc avec d'autres éléments indispensables qui sont toujours présents dans les messages en question.

Voici un échantillon du modèle que j'essaie de détecter :

WbNDSk9e

C'est une partie d'une URL de spam. Les autres groupes que j'ai vus suivent le même schéma : au moins 2 lettres UC et LC et 1 ou plusieurs chiffres, et toujours exactement 8 caractères. Je n'ai pas encore vu d'autres caractères ou variations.

À ma connaissance, le seul interrupteur que je peux utiliser est celui qui permet d'activer la sensibilité à la casse, avec (?i). Certains des autres commutateurs que j'ai vus dans certaines réponses ne fonctionnent pas dans le programme que j'utilise. Est-ce que j'en demande trop à une règle RegExpr d'une seule ligne ?

J'utilise actuellement RegEx Match pour tester mes règles et mon programme anti-spam utilise le même moteur.

2voto

agent-j Points 14703
^(?=.*?[A-Z].*?[A-Z])(?=.*?[a-z].*?[a-z])(?=.*?\d).{8}$

Réparti :

(?=.*?[A-Z].*?[A-Z]) force au moins 2 lettres majuscules.

(?=.*?[a-z].*?[a-z]) force au moins 2 lettres minuscules.

(?=.*?\d) force au moins 1 chiffre.

El ^ ... $ et le dollar pour qu'il corresponde à la chaîne entière.

Vous ne voulez pas que le (?i) car il ne tiendra pas compte de la casse.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X