Regexp : longueur minimum sur une chaine de caractères dans un formulaire

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Regexp : longueur minimum sur une chaine de caractères dans un formulaire

par Berzemus » 25 mars 2009, 14:46

Merci Berzemus !! Ta solution est lumineusement simple !
Ca fonctionne parfaitement...
Ouaip, c'est green :wink:

Ravi d'avoir aidé.

par dmx-moteur » 25 mars 2009, 13:23

Merci Berzemus !! Ta solution est lumineusement simple !
Ca fonctionne parfaitement...

par Berzemus » 25 mars 2009, 13:05

Je pense que dmx-moteur sait à propose des délimiteurs (moi, c'est le | perso. Mais j'ai toujours tendance de mettre / comme en perl. le # est plus fréquent en php).

Pour ce qui est de ton regex, si le point valide tout les caractères, le * n'est qu'un indicateur de répétition semblable au +, il ne signifie rien tout seul. Ils se comparent ainsi:
* = {0,}
+ = {1,}

Si tu veux que ça marche, j'utiliserais ceci:

Code : Tout sélectionner

^[\s\S]{300,}
le \s représente tout les espaces blancs, et le \S tout ce qui ne l'est pas. Du coup, les deux ensemble valident absolument tout.

le $ n'a pas d'utilité, comme l'a dit julian. Le ^ est utile pour l'arrêter après les 300 premiers caractères, sinon le moteur continuerait, mais sinon aucun intérêt.

par julian » 25 mars 2009, 12:51

Alors,

Déjà, ta regexp doit être encadrée par des délimiteurs (par exemple : `)
Ensuite pour gérer les retour à la ligne, il faut lui préciser qu'il peut avoir n'importe quel caractère (avec le point) OU un retour à la ligne(avec \n).

Je pense que le $ (pour dire que c'est la fin de chaine) est inutile ici mais ne gêne pas...

Regexp : longueur minimum sur une chaine de caractères dans

par dmx-moteur » 25 mars 2009, 12:47

J'utilise des expressions régulières lors d'une validation de formulaire.

Je souhaite contrôler que l'utilisateur a bien entré un nombre minimum de caractères (en l'occurence 300) dans un textarea. Dans ce textarea, il peut bien entendu passer des lignes.

Je voulais utiliser cette expression régulière pour faire mon test :

Code : Tout sélectionner

^.{300,}$
mais j'ai cru comprendre que le point indiquait une chaine de caractère sans retour ligne. Du coup mon test ne fonctionne pas...
J'ai donc pensé à utiliser * plutôt que le . :

Code : Tout sélectionner

^*{300,}$
Mais là j'ai une erreur : Warning: Compilation failed: nothing to repeat at offset 1

Quelqu'un a-t-il une idée ?

Merci par avance de votre aide.