Expression régulière de la mort

Messages postés
39
Date d'inscription
jeudi 27 mai 2004
Statut
Membre
Dernière intervention
18 février 2008
-
Messages postés
239
Date d'inscription
samedi 21 février 2004
Statut
Membre
Dernière intervention
3 juin 2010
-
Salut tous !


Voilà, j'ai un formulaire d'inscription avec Log et Pass à saisir.

Je ne veux pas de Log ni Pass avec des ', des " ou de $ et autre \ ou /...


Pour moi les expressions régulières sont régulièrement
incompréhensibles. Je suis hérmétique soit à la logique qu'elles
sous-tendent soit aux explications trouvées sur le web (pas didactiques
pour 2 sous en fait !).

Bref, voilà ce que je fais qui ne marche pas...

D'autant plus étonnant que cela marche pour la validité du mail...


J'y pige que dalle ; à l'aide !!!!!!!!!!!

____________________


// blabla précédent

$u_pass=trim($_POST['pass1']);

$possible_pass='^[-A-Za-z0-9#_~]$';

// ou ca d'ailleurs : $possible_pass='[A-Za-z0-9_\e.]{5,30}';

if(!preg_match($possible_pass, $u_pass)){//test suivant}


____________________

PekLandais

3 réponses

Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
26
Hello,

tu veux quels caractères autorisés, dans ton login et ton mot de passe? Uniquement alphanumériques ?
Messages postés
39
Date d'inscription
jeudi 27 mai 2004
Statut
Membre
Dernière intervention
18 février 2008
3
Alphanum et, @, 'underscore', é, è, ë, ê, é, ñ, û, etc. avec les lettre accentuées 'tordues', et ç, 'point', 'virgule', 'double point', 'plus', 'espace', ...

Bref, à peu près tous les caractères normaux SAUF les trucs génants et potentiellement metteur de chaos en ligne : (&?!<>=/\'{"#]}|[&$%*)£;

PS : je viens de comprendre qu'il y avait 2 règles d'écritures selon qu'on aille vers ereg vs preg_match, mais je n'ai toujours pas compris la syntaxe... ^^



PekLandais
Messages postés
239
Date d'inscription
samedi 21 février 2004
Statut
Membre
Dernière intervention
3 juin 2010
1
Salut,

prenons point par point:

$possible_pass='^[-A-Za-z0-9#_~]$';

1) avec preg_*, il est possible de gérer la case d'une chaine en ajoutant un flag, ici, 'i'.

2) ce pattern(forme) ne fonctionne pas car tu indiques qu'il faut qu'il trouve une chaine constituée d'UN caractère(inclut dans les []). Pour remédier à ce problème il faut utiliser le caractère '+'(veut dire: 1 ou plusieurs fois les entités précédentes).

Ce qui donne au final:

$possible_pass = '`^[a-z0-9-#_~]+$`i';