Expression reguliere, je debute...

Expression reguliere, je debute... - Divers - Programmation

Marsh Posté le 03-02-2006 à 15:23:14    

Bonjour a tous,
 
Voila je debut avec les expressions regulieres.
Seulement je n arrive pas a faire ce que j'ai envie :(
 
Ce que j'essaie de faire :
 
verifier si une chaine contient au moins 2 minuscules, 2 majuscules, 2 chiffres et que la chaine fasse au moins 8 caracteres (les ?.;:...... pouvant etre utilises).
 
[0-9]{2,}[a-z]{2,}[A-Z]{2,}
 
--> ca impose un ordre. 11aaAA. Comment faire pour verfier cela pour 1a1AaA
 
D'avance merci

Reply

Marsh Posté le 03-02-2006 à 15:23:14   

Reply

Marsh Posté le 04-02-2006 à 20:13:48    

Salut imnotgood,
 
Si tu veux obtenir une réponse à ta question, tu devrais nous dire dans quel langage tu veux exécuter cette recherche. Il y a tellement de possibilités que personne ne va s'aventurer à te répondre sans cette précision.
 
Désolé. Complète ta question. Tu auras plus de chances de recevoir une réponse.
 
A+

Reply

Marsh Posté le 05-02-2006 à 02:41:03    

Je me trompe peut-être mais je ne crois pas que les expressions régulières permettent de définir un motif aussi complexe. Cela dit si quelqu'un a la solution je suis curieux de la voir !


---------------
Viendez vous battre à Prologin \o/
Reply

Marsh Posté le 05-02-2006 à 02:56:37    

Citation :

'Some people, when confronted with a problem, think "I know, I'll use regular expressions".  Now they have two problems.'  -- Jamie Zawinski, comp.lang.emacs

Message cité 5 fois
Message édité par masklinn le 05-02-2006 à 02:56:48

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 06-02-2006 à 09:22:11    

Bonjour,
 
Le site je le programme en php...
J'ai pense aux expression regulieres car le faire par programmation php sera vraiment pas propre. enfin je pense....
 
j'ai encore regarde ce week end mais pas moyen de trouver sans imposer un ordre :(
Si quelqu'un pouvait me mettre sur la piste ce serait vraiment tres sympa...
 
Merci ;)

Reply

Marsh Posté le 06-02-2006 à 09:50:08    

C'est encore moi,
J'ai trouve :D
 

Code :
  1. <?PHP
  2. $pass = "a1Aa1A";
  3. $chiffres = 2;
  4. $lettresMin = 2;
  5. $lettresMaj = 2;
  6. try
  7. {
  8.     if(!preg_match_all("^[0-9]^",$pass,$out) || count($out[0])<$chiffres)
  9.         throw new Exception("Pas assez de chiffres",1);
  10.     if(!preg_match_all("^[a-z]^",$pass,$out) || count($out[0])<$lettresMin)
  11.         throw new Exception("pas assez de lettres minuscules",2);
  12.     if(!preg_match_all("^[A-Z]^",$pass,$out) || count($out[0])<$lettresMaj)
  13.         throw new Exception("pas assez de lettres majuscules",3);
  14.     print("<p><b>OK</b></p>" );
  15. }
  16. catch(Exception $e)
  17. {
  18.     print("<p><b>".$e->getMessage()."</b></p>" );
  19. }
  20. ?>


 
J'ai ecrit ca, ca fonctionne tres bien...
Mais avez vous d'autres idees plus adaptees ? Ou alors celle ci est suffisament propre ?
 
Merci ;)


Message édité par imnotgood le 06-02-2006 à 09:52:39
Reply

Marsh Posté le 06-02-2006 à 09:59:08    

Si tu veux vraiment tout faire en une seule regex, tu aurais pu faire ainsi:

Code :
  1. $sPass = str_split($pass);
  2. sort($sPass);
  3. $sPass = join($sPass,'');
  4. if ( preg_match("/(\d{2,})([A-Z]{2,})([a-z]{2,})/", $sPass)){
  5.   print 'Ok';
  6. }


En gros on recopie dans $sPass $pass sauf que toutes les lettres sont triées dans le bon ordre, donc tu te poses plus de questions pour ta regex.
 
Mais maintenant comme tu l'as dis Masklinn, pas sur que ça soit la meilleure idée d'utiliser des regex ...


Message édité par anapajari le 06-02-2006 à 09:59:38
Reply

Marsh Posté le 06-02-2006 à 10:01:48    

masklinn a écrit :

Citation :

'Some people, when confronted with a problem, think "I know, I'll use regular expressions".  Now they have two problems.'  -- Jamie Zawinski, comp.lang.emacs



 
 
C'est vrai qu'il vaut mieux reinventer ce qui existe deja...

Message cité 1 fois
Message édité par imnotgood le 06-02-2006 à 10:03:27
Reply

Marsh Posté le 06-02-2006 à 10:02:52    

merci bcp ;)
 
je ne vois pas de facon plus adaptee a par reecrire ce qui existe deja...

Reply

Marsh Posté le 06-02-2006 à 13:13:28    

imnotgood a écrit :

C'est vrai qu'il vaut mieux reinventer ce qui existe deja...


Ca n'a strictement aucun lien, les expressions rationnelle sont quelque chose de complexe, extrèmement difficile à débugger et franchement pas intéressant si deux lignes de code supplémentaires permettent de faire la même chose sans.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed