Page 1 sur 1
comprendre regexp
Posté : 10 déc. 2007, 14:08
par Invité
Bonjour à tous,
j'essaye de modifier un script qui effectue des contrôles formulaires en js.
L'expression régulière suivante est utilisée pour traiter les noms des inscrits:
var r = new RegExp("^[a-zA-Z](([\.\-a-zA-Z0-9@])?[a-zA-Z0-9]*)*$", "i");
Ce traitement ne me convient pas car il est trop strict, je voudrais élargir les possibilités de saisie.
Avant de modifier, il faut que je comprenne et là...j'ai commencé à bouquiner sur les expressions régulières mais ça va prendre du temps.
Quelqu'un saurait il ce que dit cette expression exactement?
Merci pour vos réponses.
Posté : 10 déc. 2007, 14:54
par Berzemus
element par element:
^[a-zA-Z] : Valide tout caractère qui n'est pas une lettre. (une fois)
Groupe (entre parenthèses):
([\.\-a-zA-Z0-9@])? : valide un point, un trait, une lettre (majuscule ou minuscule), un chiffre ou un arobase.
[a-zA-Z0-9]* : valide n'importe quel chaine contenant des chiffres et des lettres (maj,min), de longeur minimale 1.
Et encore un (*) pour répeter le groupe à l'envie..
Si j'ai bien compris, il s'agit d'une vérification d'émail.
C'est vrai qu'elle est coriace.. et mal faite/écrite. Non, y'a pas a dire, pour vérifier un émail, ça convient vraiment pas.
Tu devrais trouver d'autres exemples sur ce forum, en chercheant un peu. (de quelques lignes à quelques centaines, la validation d'émail étant un sujet épineux)
Posté : 10 déc. 2007, 15:40
par Invité
super, merci.
que représente le "i" passé en deuxième paramètre à la fonction?
Posté : 10 déc. 2007, 15:44
par Invité
la syntaxe est elle la même pour une expression rég. en php ou javascript?
Posté : 10 déc. 2007, 16:30
par Berzemus
la syntaxe est elle la même pour une expression rég. en php ou javascript?
Oui, sinon qu'il faut entourer l'expression de deux symboles identiques, de préférence non présentes dans le regex.
preg_replace ("#[a-z]#","",$str);
Pour ce qui est du i, il signifie simplement que la requête doit ignorer la différence majuscule/minuscule.
(pourtant la requête fait une différence, => mauvais codage)
Posté : 10 déc. 2007, 18:21
par jojolapine
element par element:
^[a-zA-Z] : Valide tout caractère qui n'est pas une lettre. (une fois)
Groupe (entre parenthèses):
([\.\-a-zA-Z0-9@])? : valide un point, un trait, une lettre (majuscule ou minuscule), un chiffre ou un arobase.
[a-zA-Z0-9]* : valide n'importe quel chaine contenant des chiffres et des lettres (maj,min), de longeur minimale 1.
Et encore un (*) pour répeter le groupe à l'envie..
Si j'ai bien compris, il s'agit d'une vérification d'émail.
C'est vrai qu'elle est coriace.. et mal faite/écrite. Non, y'a pas a dire, pour vérifier un émail, ça convient vraiment pas.
Tu devrais trouver d'autres exemples sur ce forum, en chercheant un peu. (de quelques lignes à quelques centaines, la validation d'émail étant un sujet épineux)
Tu as fait une faute sur le premier élément, en fait le ^ veut dire que l'expression doit commencer par ce qui suit (en l'occurence un caractère alpha numérique)
Posté : 10 déc. 2007, 18:36
par Invité
ok, merci à tous les 2. et le *$ qui est en fin d'expression?
Posté : 10 déc. 2007, 19:02
par Invité
le * signifi simplement que l'on peut répéter tout ce qu'il y a entre parenthèses juste avant autant de fois que l'on veut
et le $ veut dire que l'expression doit se terminée par ce qui précède...
Posté : 10 déc. 2007, 23:39
par Berzemus
Tu as fait une faute sur le premier élément, en fait le ^ veut dire que l'expression doit commencer par ce qui suit (en l'occurence un caractère alpha numérique)
ach zut.. j'ai du foir le chapeau tans les brackets, et pas detans..

Posté : 10 déc. 2007, 23:57
par AB
Si c'est pour valider une adresse email, perso j'utilise la première solution de ce lien
http://atranchant.developpez.com/code/validation/