2009-06-20 3 views
0

J'ai une zone de texte. J'essaie de vérifier qu'il contient au moins 3 caractères non-espaces en javascript, et si c'est le cas, je dois revérifier le message posté en php.L'expression rationnelle requiert un nombre de caractères non blancs

Je pense qu'une fois que je l'aurai fonctionné en php, je peux utiliser la même expression rationnelle pour javascript. Cependant, les espaces blancs le gâchent.

Je ne comprends pas pourquoi ce qui suit ne fonctionne pas en php:

$msg = mysql_real_escape_string($_POST["msg"]); 

if(!preg_match('/[\S]{3,}/',$msg)){ 
    echo 'too short'; 
} 

Pour moi, il semble que cela nécessite au moins 3 « caractère non-blanc ». Cependant si j'entre:

f f f 

Il est dit que c'est trop court. Et

f 

d 

passe. J'ai essayé d'ajouter le drapeau "g", et de jouer avec^et $ entourant l'expression rationnelle.

Merci pour les conseils

Répondre

1

Votre regex correspond à 3 ultérieurs des caractères non-blancs.

Les matchs suivants 3 caractères non-blancs, séparés par quoi que ce soit:

/(\S.*){3,}/ 

Pour effectuer la validation sur plusieurs lignes, ajoutez le modificateur s:

/(\S.*){3,}/s 

Vous devez également faire la validation avant en appelant mysql_real_escape_string. Dans votre exemple, la deuxième chaîne est convertie en f\r\nd ou en f\nd en premier. Il contient maintenant 3 caractères non-blancs subséquents! Comme vous pouvez le voir, cela vissera la validation.

+0

Merci! Tu m'as sauvé quelques heures. –

+0

Je l'ai testé et remarqué que les sauts de ligne ne fonctionnaient pas, puis j'ai vérifié votre réponse à nouveau, et maintenant voir .... Merci beaucoup, je suis nul à regexp. –

+0

@Whosane, je dis cela puisque vous semblez être nouveau ici. Si la réponse de molf est bonne pour vous, il serait poli de l'accepter (cliquez sur la coche sous le nombre de votes sur la gauche de la réponse) – nik

Questions connexes