Petit probleme avec script verife de mot de passe

Eléphant du PHP | 63 Messages

28 avr. 2009, 14:13

Code : Tout sélectionner

function testFormulaire(){ ff=document.forms["NomDuformulaire"]; var reg0=/^[a-z]{>=1} and [A-Z]{>=1} and [0-9]{>=1} and [.-_]{>=1}$/; if (!reg0.exec(ff.mPasseMembre.value)){ alert ("veuillez saisir un mot de passe contenant au moins un caractère allant de a-z, A-Z, 0-9 et .-_"); return(false); } }
Bonjour,

Je présente le probleme en fait se script comme je l'ai pensé est sencé verifier que le
mot de passe contienent au moins une lettre en majuscule et au mois une lettre en miniscule
et au moins un chiffre et au moins un caractere special suivant .-_

J'y connais pas grand chose en javascript donc j'ai du faire une erreur dans mon reg0= je pense ?
Avec le temps qui s'écoule je trouve que je m'en sort de mieux en mieux :)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

28 avr. 2009, 22:13

Effectivement... y a pas de conditions logiques dans une expression régulière... y a pas non plus >=1, mais des quantificateurs : ? + *

Fais toi 4 masques pour chacun des tests que tu veux effectuer, et test les avec des && si tu veux que tous soient vrais. A tester, mais quelque chose de ce genre devrait le faire :
function testFormulaire(){ 
   ff=document.forms["NomDuformulaire"]; 
   var reg0=/[a-z]+/;
   var reg1=/[A-Z]+/;
   var reg2=/[0-9]+/;
   var reg3=/[._-]+/; 
   if (!reg0.exec(ff.mPasseMembre.value) && !reg1.exec(ff.mPasseMembre.value) 
      && !reg2.exec(ff.mPasseMembre.value) && !reg3.exec(ff.mPasseMembre.value) ){ 
      alert ("veuillez saisir un mot de passe contenant au moins un caractère allant de a-z, A-Z, 0-9 et .-_"); 
      return (false); 
   } 
}
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

ViPHP
ViPHP | 3300 Messages

28 avr. 2009, 22:16

Marche pas ça?

Code : Tout sélectionner

var reg = /[a-zA-Z0-9._-]+/;
Fait du php depuis que ca existe ou presque :)

ViPHP
AB
ViPHP | 5818 Messages

29 avr. 2009, 00:01

Marche pas ça?

Code : Tout sélectionner

var reg = /[a-zA-Z0-9._-]+/;
Je crois pas, là c'est la condition "ou" et non pas "et".

Eléphant du PHP | 63 Messages

29 avr. 2009, 08:27

Bien le bonjour,

oui parfait "ryle" d'ailleurs c'est plus clair et facile a lire, mais pour le novice que je suis.
"nagol" non c'est en effet comme le dis en dessous de toi "AB" le test pour le coup n'est plus
le meme ;)


grand merci a vous pour cette aide precieuse ;)
Avec le temps qui s'écoule je trouve que je m'en sort de mieux en mieux :)

ViPHP
ViPHP | 3300 Messages

29 avr. 2009, 09:27

Marche pas ça?

Code : Tout sélectionner

var reg = /[a-zA-Z0-9._-]+/;
Je crois pas, là c'est la condition "ou" et non pas "et".
arf oui j'ai mal lu le post initial sorry :)
Fait du php depuis que ca existe ou presque :)

Eléphant du PHP | 63 Messages

29 avr. 2009, 10:50

Pas de souci ;) tu n'avais pas besoin de te justifier ;)
Avec le temps qui s'écoule je trouve que je m'en sort de mieux en mieux :)

ViPHP
ViPHP | 3300 Messages

29 avr. 2009, 12:08

mway, c'est toujours bon de reconnaitre une boulette, nous autres développeurs on a tendance à se prendre pour dieu très rapidement sinon :)

en fait quan dj'ai vu le post de ryle ca m'a embetté de voir 3 regexp je me disais que ca pouvait etre fait en un seul (ce que je pense toujours) mais ce que j'ai proposé est à l'ouest si on considère ta requête initiale :)
Fait du php depuis que ca existe ou presque :)

Eléphant du PHP | 63 Messages

29 avr. 2009, 13:08

dailleurs oui tu mis fait penser voila le script fonctionant avec petite modif car c'est
pas de ET qu'il fallait dans la condition mais des OU.

Code : Tout sélectionner

function testFormulaire(){ ff=document.forms["adminModifier"]; var reg2=/[a-z]+/; var reg3=/[A-Z]+/; var reg4=/[0-9]+/; var reg5=/[._-]+/; if (!reg2.exec(ff.users_password.value) || !reg3.exec(ff.users_password.value) || !reg4.exec(ff.users_password.value) || !reg5.exec(ff.users_password.value)){ alert ("veuillez saisir un mot de passe contenant au moins un caractère allant de a-z, A-Z, 0-9 et .-_"); return (false); } }
car ca peut toujours servir a quelqu'un

PS : parcontre je l'ai mis aussi en 4 "reg" et vu que ca marche et que je ne suis pas assez
competent en javascript, je laisse a tout autre la possbilité d'essayer de passer en 1 "reg" ;)
Avec le temps qui s'écoule je trouve que je m'en sort de mieux en mieux :)