[RESOLU] Expression régulière

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 : [RESOLU] Expression régulière

Re: Expression régulière

par Bosse.cie » 06 déc. 2014, 03:01

Désolé pour le temps de réponse; plein de boulot, tout ça quoi...

Pour le crochet fermant, j'ai trouvé : il suffit de le mettre en première position. Pourquoi ? ça c'est un mystère, surtout qu'il n'y a pas de problème en php.

En effet, je vérifie tout ça plus tard en php.
Néanmoins, je trouve ça plus confortable de le faire aussi en javascript pour le confort de l'utilisateur.

Merci de l'aide.

Michel

Re: Expression régulière

par Berzemus » 27 nov. 2014, 11:39

Par curiosité, c'est quoi la valeur que tu veux valider ?

Accessoirement, vérifier que chaque caractère d'une chaine de longueur X n'est ni un >, <, [,],{ ou un } me parait moins optimal que de simplement vérifier que la longueur de ladite chaine est la meme que la même chaine dont on aurait supprimé ces caractères:
$ca_passe_bien= strlen(preg_replace('#\[\]\{\}<>#','',$chaine)) == strlen($chaine);
// sans regex, plus rapide:
$ca_passe_mieux = strlen(str_replace(['[',']','{','}'.'<','>'],'',$chaine)) == strlen($chaine);
(oui, exemple en php, j'ai la flemme)

Ceci dit, une vérification JS ne doit pas empecher une vérification côté serveur. C'est important, il ne faut pas faire confiance a ce qui se passe côté client :wink:

Re: Expression régulière

par Bosse.cie » 26 nov. 2014, 12:04

J'avance ... à reculons.

J'ai testé un à un chaque caractère que je veux exclure; et il semble que c'est le caractère ] qui pose problème.
Si je reprends mon exemple précédent; en mettant comme contenu à mon expression régulière :[javascript]var exp =new RegExp("^[^<>\[\{\}\"]{1,"+t_libelle+"}$","g");[/javascript]
ça fonctionne.

Par contre, si je rajoute \] :
[javascript]var exp =new RegExp("^[^<>\[\]\{\}\"]{1,"+t_libelle+"}$","g");[/javascript]
ça ne fonctionne plus !

Comme s'il ne prenait pas en compte le caractère d'échappement ?
Comment faire pour exclure le crochet fermant ?

Expression régulière

par Bosse.cie » 26 nov. 2014, 11:19

Bonjour,

Voilà, encore un problème d'expression régulière.

Je dois avouer que j'ai du mal avec ça.

Néanmoins, ça fait deux jours que je bloque sur mon cas, et je ne comprends pas pourquoi.

J'ai deux input, qui appelle chacun une fonction sur onchange.

Pour la première, ça fonctionne; pas de problème.

Pour la seconde, ça ne fonctionne pas.
Il ne se passe rien, que je tape les bons caractères ou pas.
J'ai tenté de tester mon expression sur un site qui le propose, ça fonctionne. Alors qu'est-ce qui se passe ?
[javascript]function testlib(libel) {
var exp =new RegExp("^[^<>\[\]\{\}\"]{1,"+t_libelle+"}$","g");
if(exp.test(libel.value)) {
libel.className="correct";
} else {
libel.className="incorrect";
}
return;
}[/javascript]
Dans ce cas, t_libelle contient la valeur 100. J'ai tenté de mettre cette valeur en clair, ça ne change rien.
J'ai testé libel.value; j'ai bien le contenu de mon input.

Mon but est, (je pense que vous l'aurez compris), de refuser la saisie de tous les caractères de mon expression régulière.

J'ai voulu tester avec le débogueur de firefox... il plante sans message d'erreur, et je suis obligé de relancer firefox. Mais je ne pense pas que cela vienne de ma fonction vu qu'il plante aussi avec l'autre cas qui fonctionne.
Par contre, forcément, je ne peux pas tester correctement.
D'où mon appel à l'aide...

Merci

Michel