11548 sujets

JavaScript, DOM et API Web HTML5

Pour faire des contrôles sur mes formulaires, j'utilise des expressions régulières (regexp). Voici celles que j'utilise déjà :

Mails
Une adresse email contient un nombre quelconque de chiffres et de lettres avec eventuellement des underscores, des points ou des tirets. Puis un arobas ainsi qu'une nouvelle chaine de chiffres, de lettres, de points et de tirets. Puis un point suivi d'une chaine de 2, 3 ou 4 caractères numériques et alphabétiques.
 /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\.\-])+\.)+([a-zA-Z0-9]{2,4})+$/ 


Codes postaux
Un code postal français est composé d'un nombre de cinq chiffres.
 /^[0-9]{5}$/ 


Prix
Un prix est composé de chiffres et éventuellement d'espaces, d'un point ou d'une virgule comme séparateur, puis de d'un nombre de deux chiffres.
Un prix peut aussi être rond, il ne contient à ce moment que des chiffres et des espaces.
 /(^([0-9\s])+([\.,]){1}([0-9]){2}$)|(^([0-9\s])+$)/ 


Si vous aussi vous avez des contrôles en regexp à partager (numéros de téléphone, par exemple), ou des corrections à effectuer sur les miens (bien qu'ils semblent fonctionner), n'hésitez pas.
Administrateur
Bonjour,

Pour les prix ça n'accepte que 12345.67 (format simple avec le . du clavier numérique, à l'anglo-saxonne) ou 12345,67 (format simple français). Mais quid de 12.345,67 ou 12 345,67? Le séparateur des milliers, lorsqu'il est présent, peut être un point ou un espace (si c'est une virgule c'est typiquement anglo-saxon).
Bonsoir,

Pour les mails, j'utilise celle-ci :
^[-a-zA-Z0-9_\.]{3,}@[-a-zA-Z0-9_]{3,}\.[a-z]{2,4}$

Pour les numéros de téléphone
En France (5 groupes de 2) :
^\d{2}( \d{2}){4}$
En Suisse (2 groupes de 3 puis 2 groupes de 2) :
^\d{3} \d{3} \d{2} \d{2}$
Plusieurs groupes non définis à l'avance :
^\d+( \d+)+$

Un nombre entier quelconque :
^-?\d+$

Un nombre réel quelconque :
^-?\d+(\.\d+)?$

Une date au format européen :
^\d{2}/\d{2}/\d{4}$
Attention à ne pas oublier d'échapper les / si vous utilisez la forme abrégée du javascript (/motif/options)

Une date au format américain :
^\d{4}-\d{2}-\d{2}$

Attention, les expressions ci-dessus ne vérifient pas si le jour entré est valide (p.ex. 29/02/2005)

Si vous avez quelque chose de plus performant pour les URLs hormis le simple ^http://.*$, je suis preneur.

Un peu de pub maintenant.
UN tuto sur les regexp : http://www.toutjavascript.com/savoir/savoir22.php3

Quelques testeurs d'expression régulières javascript :
- Le mien http://quentinc.net/javascript/testeur-expressions-regulieres/
- Sur toutjavascript.com http://www.toutjavascript.com/service/regexp.php

Je termine par un site incontournable en matière d'expressions régulières. IL les aborde sous l'angle du php mais la plupart des options se retrouvent en javascript, sauf notamment les assertions :
http://www.expreg.com/
FlorentG a écrit :
J'en ai une autre pour les mails, RFC-822 valid Smiley lol
Mail::RFC822::Address:
Elle est terrible celle-ci Smiley ravi

Je rajoute un testeur que je trouve bien fichu (en bas de page) : http://perso.orange.fr/jean-paul.davalan/lang/jsc/js08.html

et une regexp qui me sert à parser un ftp_rawlist sur un serveur FTP Unix (Bof Smiley rolleyes si ça peut servir)
([-dl])([rwxst-]+).* ([0-9]) ([a-zA-Z0-9]+).* ([a-zA-Z0-9]+).* ([0-9]*) ([a-zA-Z]{3}) ([0-9]{1,2}) ([0-9]{2}:[0-9]{2}| [0-9]{4}) (.+)

@+