Après avoir un peu trop bavardé sur le source
de Melnofil (http://www.javascriptfr.com/code.aspx?ID=15873)
je me résoud à ajouter mon grain de sel sur un sujet
largement débattu.
Ces sripts sont ceux que j'utilise, et j'y ai rajouté
quelques scripts utilisés par Mimata que j'ai modifiés
(interception de caractères interdits dans un champ,
modification de sa couleur de fond).
Il se reconnaîtra et pourra utiliser ces scripts en
remettant sa mise en page.
La validation de la syntaxe d'un courriel (email) vient
de l'interprétation difficile de la
RFC 822 (http://abcdrfc.free.fr/rfc-vo/rfc0822.txt)
devenue obsolète et remplacée par la
RFC 2822 http://abcdrfc.free.fr/rfc-vf/rtf/rfc2822.rtf
et la
RFC 1034 (http://abcdrfc.free.fr/rfc-vf/rfc1034.html)
Pour "Le Format des Messages de l'Internet" et
"DNS - Domain Name Server - Système de résolution des
adresses Internet numériques (pour la couche IP) et des
adresses symboliques (pour l'Homme).
Ce sont les RFC traduites en français par RFC-Editeur.org
Pour ce qui est de la RFC 2822, je n'ai pas encore
fini de l'interpréter.
Les scripts qui suivent ne tiennent pas encore compte
- des courriels noté : "Arthur, ou t'as mis le corp ?"@domaine.tld
(Pas beau la "chaîne marquée" ?)
- des courriels noté : utilisateur@[short.short.short.short]
(short = nombre 8 bits en notation décimale)
- des courriels noté : utilisateur@#nombre
(nombre = adresse IP 32 bits en notation décimale)
Et est-ce que ça sert ? Je n'en connais pas.
Mais si c'est correct, il faudra encore un peu se gratter
les boyaux de la tête.
Ici les noms de domaines s'approche de la règle RFC 2822
- 63 octets par identifiant
- 255 octets par nom de domaine entièrement qualifié (FQDN)
FQDN = <identifiant>.<identifiant>. ... .TLD
Un identifiant doit commencer par une lettre, terminer par une
lettre ou un digit, et n'avoir à l'intérieur que des lettres,
des digits, et éventuellement le caractère Hyphénation (-)
Les TLD sont des caractères de a à z ([a-z])
limités de fait, à 2 Min et 6 Max ([a-z]{2,6}).
Mais l'expression régulière, en fait dépasse les 255 fatidiques.
(63 x 4 + 4 points) + 6 caractères de TLD max = 262 caractères.
Qui peut trouver en expression régulière cette forme (255 max), sans
un test supplémentaire ?
En Rajoutant : &&(substr(sMail.lastIndexOf("@")+1).length<=255)
à function bSyntaxeEmail(sMail)
var re=/^[a-z\d]+((\.|-|_)[a-z\d]+)*@((?![-\d])[a-z\d-]{0,62}[a-z\d]\.){1,4}[a-z]{2,6}$/gi;
return (sMail.match(re)==sMail)&&(substr(sMail.lastIndexOf("@")+1).length<=255);
on y arrive sans trop alourdir !
Optimisé en : substr(sMail.lastIndexOf("@")).length<=256