expressions reguliere , help !

expressions reguliere , help ! - PHP - Programmation

Marsh Posté le 10-03-2006 à 15:41:20    

salur , désirant utiliser de facon optimale les expression régulieres, je voudrais savoir comment verifier qu'une chaine contient au moins deux chiffres , trois lettres , et deux caracteres speciaux...
 
le pire c que j'arrive a faire des expressions complexes mais celle ci est vraiment toute con a faire...

Reply

Marsh Posté le 10-03-2006 à 15:41:20   

Reply

Marsh Posté le 10-03-2006 à 15:48:07    

je suis clairement pas un pro des regex, mais retrouver des motifs indépendamment de leur ordre d'apparition me parait compliqué.
 
pour que ça soit indépendamment de l'ordre dans lequel ils apparaissent, je dirais qu'il faudrait 3 regex : une pour les chiffres, une pour les lettres, une pour les caracteres spéciaux.
Si les 3 regex sont vérifiées, alors c'est bon.
 
Enfin bon je sens que je donne une réponse à la con qui va se faire descendre là :D

Reply

Marsh Posté le 10-03-2006 à 15:50:11    

oui mais le truc c qu'ils sont mélangés ! J'ai oublié de le préciser !

Reply

Marsh Posté le 10-03-2006 à 15:55:11    

bah oui mais ça change rien à ce que j'ai dit :
- 1ere expression : '[[: digit:]]{1}.*[[: digit:]]{1}'
et ainsi de suite
 
enfin bon je le répète, les regex et moi ça fait 3, même mon exemple doit être à chier, surement tout autant que ma proposition


Message édité par Djebel1 le 10-03-2006 à 15:55:28
Reply

Marsh Posté le 10-03-2006 à 16:07:22    

c'est ce a quoi j'avais pensé mais ca fait lourd , et il y surement mieux ;)
Merci de ton aide :jap:

Reply

Marsh Posté le 10-03-2006 à 16:09:02    

je serai assez de l'avi de Djebel1, le faire en 3 fois semble le plus simple.


---------------
http://poemes.iceteapeche.com - http://www.simuland.net
Reply

Marsh Posté le 10-03-2006 à 16:11:33    

bah écoute en fait étant donné qu'il n'y a pas d'opérateurs "and" dans les regex à proprement parlé, je ne vois pas comment ça pourrait être fait autrement qu'avec 3 regex.

Reply

Marsh Posté le 10-03-2006 à 16:17:40    

hum tu peux ruser en fait, tu fais un reorder sur ton string de façon à être sur d'avoir tes caractères toujours dans le même ordre. Un truc dans le genre:

Code :
  1. $a="3GDE6TG9 FD3-";
  2. $b = str_split($a);
  3. sort($b);
  4. $b = implode( $b,'');
  5. if ( preg_match('/\W{2,}\d{2,}\w{2,}/', $b)) {
  6.     print 'OK';
  7. }


Il doit surement exister une fonction php pour trier un string mais j'ai pas trop le temps de chercher.
Fait aussi attention a tes caractères spéciaux, peut-être ne vaut-il mieux pas utiliser \W.
 
Quoi qu'il en soit, tu peux le faire mais c'est ptêt pas le plus simple, maintenable et compréhensible!

Reply

Marsh Posté le 10-03-2006 à 16:19:03    

ha oui, en mettant la chaine en ordre en fonction du type de catactere, ça pourrait le faire

Reply

Marsh Posté le 10-03-2006 à 16:22:18    

ben ouais mais j'aurais bien voulu le faire dans les regles :/

Reply

Marsh Posté le 10-03-2006 à 16:22:18   

Reply

Marsh Posté le 10-03-2006 à 16:24:32    

je pense que c'est pas possible sans réarrangement de la chaîne. Et puis utiliser 3 regex ça me parait propre

Reply

Marsh Posté le 10-03-2006 à 16:28:11    

non je veux dire c'est le procédé de traitement préalable de la chaine qui me dérange, ca doit etre faisable directement...

Reply

Marsh Posté le 10-03-2006 à 16:31:39    

ça doit certainement être faisable mais quel est l'interet?  
ça sera plus compliqué, plus gourmand en ressource ...
 

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


Reply

Marsh Posté le 10-03-2006 à 16:38:50    

ben justement si c'est plus simple , c'est forcément moins gourmand ;)

Reply

Marsh Posté le 10-03-2006 à 17:17:14    

oui, c'est pour ça que je pense que 3 regex, c'est plus mieux que traitement de la chaine + 1 regex

Reply

Sujets relatifs:

Leave a Replay

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