comprendre regexp

Invité
Invité n'ayant pas de compte PHPfrance

10 déc. 2007, 14:08

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.

ViPHP
ViPHP | 4039 Messages

10 déc. 2007, 14:54

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)
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Invité
Invité n'ayant pas de compte PHPfrance

10 déc. 2007, 15:40

super, merci.
que représente le "i" passé en deuxième paramètre à la fonction?

Invité
Invité n'ayant pas de compte PHPfrance

10 déc. 2007, 15:44

la syntaxe est elle la même pour une expression rég. en php ou javascript?

ViPHP
ViPHP | 4039 Messages

10 déc. 2007, 16:30

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)
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

ViPHP
ViPHP | 3607 Messages

10 déc. 2007, 18:21

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)

Invité
Invité n'ayant pas de compte PHPfrance

10 déc. 2007, 18:36

ok, merci à tous les 2. et le *$ qui est en fin d'expression?

Invité
Invité n'ayant pas de compte PHPfrance

10 déc. 2007, 19:02

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...

ViPHP
ViPHP | 4039 Messages

10 déc. 2007, 23:39

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.. :oops:
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

ViPHP
AB
ViPHP | 5818 Messages

10 déc. 2007, 23:57

Si c'est pour valider une adresse email, perso j'utilise la première solution de ce lien
http://atranchant.developpez.com/code/validation/