Regex: au moins deux caractères dans un "textarea"

Résolu/Fermé
chantaussel Messages postés 137 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 9 juillet 2014 - 16 janv. 2013 à 14:49
chantaussel Messages postés 137 Date d'inscription lundi 17 mars 2008 Statut Membre Dernière intervention 9 juillet 2014 - 17 janv. 2013 à 11:21
Bonjour,

J'ai un petit problème de regex.
Dans un formulaire contenant un champ TEXTAREA, je souhaite vérifier avant envoi que l'utilisateur a bien écrit au moins deux caractères, sans compter les appuis sur la touche "entrée".
C'est bien il me semble le sens du point dans les regex?

Voilà ma regex:
$message = strip_tags($_POST['message']);
if (preg_match("#.{2,}#", $message))

Et j'ai testé plusieurs cas de figure:
- si je tape une seule lettre --> pas d'envoi
- si j'en tape deux --> envoi
- si je tape plusieurs fois sur entrée (sans rien écrire) --> pas d'envoi

Jusque là tout est normal, mais:
- si je tape une lettre + au moins une fois sur entrée --> envoi

Je ne comprends pas ce qui cloche... Ce n'est pas capital, mais je trouve ça bizarre.

Merci d'avance de votre aide :)



6 réponses

armasousou Messages postés 1267 Date d'inscription dimanche 16 août 2009 Statut Membre Dernière intervention 30 décembre 2016 83
Modifié par armasousou le 16/01/2013 à 16:01
La classe . représente n'importe quelle caracteres, j'imagine qu'une chaine de caracteres remplis d'espaces uniquement est considéré comme vide par preg match (probablement un trim d'entré), mais avec une lettre avant, ils sont compté ^^

Utilise la classe "\w" (qui correspond à [A-Za-z0-9_] et les caractéres accentués) plutot que "." ou [:alnum:] (pareil que \w sans le "_")
1