Bonjour, j'ai un problème avec les expressions régulières.
Après que l'utilisateur ait rempli un formulaire d'enregistrement, je vérifie via php et les expressions régulières qu'il n'ait pas rempli les champs de manière erronée. Pour tous mes champs j'ai trouvé l'expression exacte que je cherchais, mais j'ai un soucis pour le mot de passe.
voici l'expression (de type 'ereg'):
Avec cette expression, le php vérifie qu'il y ait bien au moins une lettre et un chiffre dans le mot de passe, c'est l'effet recherché. Cependant, je souhaites que l'utilisateur ne puisse pas entrer moins de 6 caractères divers, hors avec cette expression, il peut très bien n'en rentrer que deux.
Que dois-je faire ? J'ai plusieurs questions:
- y a t-il un meilleur moyen d'imposer la présence de deux caractères non successifs dans une seule expression régulière ?
- serais t-il préférable que je passe par deux expressions régulières ? if (exp1 && exp2) ?
- peut on définir un nombre de caractère minimal à un ensemble d'expressions régulières ? Par exemple, j'aimerais pouvoir imposer un nombre minimum de caractères à x et y sans définir la longueur de x et de y, quelquechose qui serait comme ceci: '(x*y*){4,}' ? (et "xyyy" ou "xxxy" ou encore "xxxx" seraient valides mais pas "xxy")
Merci de vos réponses, je cherche peut être trop compliqué alors que faire deux expressions régulières me semble tellement simple, mais on me l'a déconseillé alors j'essaye de trouver une alternative.
Modifié par circle (02 Aug 2008 - 23:55)
Après que l'utilisateur ait rempli un formulaire d'enregistrement, je vérifie via php et les expressions régulières qu'il n'ait pas rempli les champs de manière erronée. Pour tous mes champs j'ai trouvé l'expression exacte que je cherchais, mais j'ai un soucis pour le mot de passe.
voici l'expression (de type 'ereg'):
^.*[[:alpha:]].*[[:digit:]].*$|^.*[[:digit:]].*[[:alpha:]].*$
Avec cette expression, le php vérifie qu'il y ait bien au moins une lettre et un chiffre dans le mot de passe, c'est l'effet recherché. Cependant, je souhaites que l'utilisateur ne puisse pas entrer moins de 6 caractères divers, hors avec cette expression, il peut très bien n'en rentrer que deux.
Que dois-je faire ? J'ai plusieurs questions:
- y a t-il un meilleur moyen d'imposer la présence de deux caractères non successifs dans une seule expression régulière ?
- serais t-il préférable que je passe par deux expressions régulières ? if (exp1 && exp2) ?
- peut on définir un nombre de caractère minimal à un ensemble d'expressions régulières ? Par exemple, j'aimerais pouvoir imposer un nombre minimum de caractères à x et y sans définir la longueur de x et de y, quelquechose qui serait comme ceci: '(x*y*){4,}' ? (et "xyyy" ou "xxxy" ou encore "xxxx" seraient valides mais pas "xxy")
Merci de vos réponses, je cherche peut être trop compliqué alors que faire deux expressions régulières me semble tellement simple, mais on me l'a déconseillé alors j'essaye de trouver une alternative.
Modifié par circle (02 Aug 2008 - 23:55)