Optimiser une regex
Résolu
Cybermate
Messages postés
221
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
j'utilise depuis très longtemps une regex pour vérifier la conformité des mots de passe avec ces règles suivantes :
- minimum 6 caractères [max 20)
- un chiffre
- une lettre minuscule
- une lettre majuscule
Voici la fameuse regex :
J'ai l'impression, sans forcément être super connaisseur en regex que ceci [0-9a-zA-Z] fait un peu la même chose que cela : (?=.*[a-z])(?=.*[A-Z]).
Ne serait-il pas judicieux de faire plutôt comme ceci :
Merci de votre aide,
j'utilise depuis très longtemps une regex pour vérifier la conformité des mots de passe avec ces règles suivantes :
- minimum 6 caractères [max 20)
- dont au moins :
- un chiffre
- une lettre minuscule
- une lettre majuscule
Voici la fameuse regex :
'/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[0-9a-zA-Z]{6,20}$/'
J'ai l'impression, sans forcément être super connaisseur en regex que ceci [0-9a-zA-Z] fait un peu la même chose que cela : (?=.*[a-z])(?=.*[A-Z]).
Ne serait-il pas judicieux de faire plutôt comme ceci :
'/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9]){6,20}$/'
Merci de votre aide,
A voir également:
- Optimiser une regex
- Optimiser son pc - Accueil - Utilitaires
- Tcp optimiser - Télécharger - Optimisation
- Optimiser windows 10 - Guide
- Optimiser et défragmenter le lecteur - Guide
- Optimiser un pdf - Guide
1 réponse
Bonjour
pout t'aider il exsite pleins de sites de test de regex.
https://www.google.fr/search?q=regex+online+tester&sourceid=ie7&rls=com.microsoft:fr-FR:IE-Address&ie=&oe=&gfe_rd=cr&ei=uR-XV6K4BYex8we0rLfoBg&gws_rd=ssl
Chaque langage ayant des spécificités dans l'application de l'outil, j'en ai pris un dédié au PHP (que je ne connais pas) pour essayer tes 2 propositions
La première fait ce que tu demandes, à noter que les caractères spéciaux sont exclus.
La deuxième bogue.
Ce qui équivaut à
Mais là tu n'imposes pas qu'il y ait au moins un chiffre et une minuscule et une majuscule peut importe l'ordre.
Il faut donc préciser je veux un chiffre n'importe où, ce qu'impose
Donc tu veux la simplifier avec la même politique c'est
Maintenant tu pourrais ajouter quelques caractères spéciaux (par exemple ! ( ) { } # ' & ; :)
optionnel
ou obligatoire
pout t'aider il exsite pleins de sites de test de regex.
https://www.google.fr/search?q=regex+online+tester&sourceid=ie7&rls=com.microsoft:fr-FR:IE-Address&ie=&oe=&gfe_rd=cr&ei=uR-XV6K4BYex8we0rLfoBg&gws_rd=ssl
Chaque langage ayant des spécificités dans l'application de l'outil, j'en ai pris un dédié au PHP (que je ne connais pas) pour essayer tes 2 propositions
La première fait ce que tu demandes, à noter que les caractères spéciaux sont exclus.
La deuxième bogue.
[0-9a-zA-Z]{6,20}signifie une lettre ou un chiffre de 6 à 20 fois
Ce qui équivaut à
\w{6,20}
Mais là tu n'imposes pas qu'il y ait au moins un chiffre et une minuscule et une majuscule peut importe l'ordre.
Il faut donc préciser je veux un chiffre n'importe où, ce qu'impose
(?=.*\d)et je veux une majuscule n'importe où
(?=.*[A-Z])et je veux une minuscule n'importe où
(?=.*[a-z])
Donc tu veux la simplifier avec la même politique c'est
^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])\w{6,20}$
Maintenant tu pourrais ajouter quelques caractères spéciaux (par exemple ! ( ) { } # ' & ; :)
optionnel
^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[\w!\(\)\{\}#'&;:]{6,20}$
ou obligatoire
^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!\(\)\{\}#'&;:])[\w!\(\)\{\}#'&;:]{6,20}$
Cybermate
Messages postés
221
Date d'inscription
Statut
Membre
Dernière intervention
21
Merci je comprend un peu mieux du coup. On en fait tellement peu des regex que les oublie facilement.
Utilisateur anonyme
De rien