Page 1 sur 1

Petit probleme avec script verife de mot de passe

Posté : 28 avr. 2009, 14:13
par consequences

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 ?

Posté : 28 avr. 2009, 22:13
par Ryle
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); 
   } 
}

Posté : 28 avr. 2009, 22:16
par Nagol
Marche pas ça?

Code : Tout sélectionner

var reg = /[a-zA-Z0-9._-]+/;

Posté : 29 avr. 2009, 00:01
par AB
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".

Posté : 29 avr. 2009, 08:27
par consequences
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 ;)

Posté : 29 avr. 2009, 09:27
par Nagol
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 :)

Posté : 29 avr. 2009, 10:50
par consequences
Pas de souci ;) tu n'avais pas besoin de te justifier ;)

Posté : 29 avr. 2009, 12:08
par Nagol
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 :)

Posté : 29 avr. 2009, 13:08
par consequences
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" ;)