JeuWeb - Crée ton jeu par navigateur
Expression reguliere Email - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Expression reguliere Email (/showthread.php?tid=2955)

Pages : 1 2


Expression reguliere Email - Argorate - 29-11-2010

Bonjour,


j'ai un petit soucis d'expression reguliere pour la validation de mon inscription.

Pour l'instant, j'ai la chose suivante:
var reg_email = /^[_A-Za-z0-9-\.]+@[A-Za-z0-9]{2,}\.[a-z]{2,4}$/;

Cependant une adresse mail d'un sous domaine n'est donc pas accepter, exemple:

toto@etudiant.iut.fr

Donc cela est très embetant, et je ne sais pas comment dire en ER "regarde uniquement le dernier "."?


Merci de m'indiquer une solution si vous en connaissez une.


RE: Expression reguliere Email - Gwym - 29-11-2010

Récemment je suis tombé sur ça, pour une validation compatible RFC 2822

http://projects.scottsplayground.com/email_address_validation/lib/email.js

 /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i



RE: Expression reguliere Email - Argorate - 29-11-2010

C'est cela oui, et tu as pas trouver plus compliqué non? Big Grin
J'apprecie ton aide, mais je voudrais un truc qui reste maintenable hein :p


RE: Expression reguliere Email - niahoo - 29-11-2010

Bof, les règlers de création de mails ne changent pas. tu peux très bien copier-coller celle-ci telle quelle, et si jamais ça change, tu auras tout le temps d'en trouver une meilleure !


RE: Expression reguliere Email - Jeckel - 30-11-2010

(29-11-2010, 08:38 PM)Argorate a écrit : Pour l'instant, j'ai la chose suivante:
var reg_email = /^[_A-Za-z0-9-\.]+@[A-Za-z0-9]{2,}\.[a-z]{2,4}$/;

Cette expression régulière sera de toute façon incomplète car depuis peu, certaines extensions accèptes les caractères spéciaux (type accents) dans les noms de domaines, ce que ne gère pas l'expression ci-dessus.

Je te conseillerai donc de prendre celle de Gwym, qui si elle respecte effectivement la RFC est la meilleure solution possible.

Sinon, le plus simple est d'utiliser une librairie javascript du type de Dojo qui inclus toutes une collections de valideurs poussés (e-mail, date, heure, url (pour les avatars par exemple) etc...)

Pour dojo : http://www.dojotoolkit.org/

Un exemple d'utilisation de validation d'adresse mail : http://dojocampus.org/explorer/#Dijit_Form%20Controls_Text%20Boxes_Validation_Email%20Address_Single


RE: Expression reguliere Email - NicoMSEvent - 30-11-2010

ce que j'utilise pour mon jeu (même regex en js en php)


RegExp('\^[A-z0-9]+([-_.]?[A-z0-9]+)*@(([A-z0-9]+)[-]?([A-z0-9]+)[.])+[A-z0-9]{2,6}$')



RE: Expression reguliere Email - SorenS - 30-11-2010

Juste pour info, en php pensez aux filtres !!! (php 5)


if(filter_var($$this->email, FILTER_VALIDATE_EMAIL)){
// L'adresse email est bonne
}



RE: Expression reguliere Email - Jeckel - 30-11-2010

(30-11-2010, 02:10 PM)SorenS a écrit : Juste pour info, en php pensez aux filtres !!! (php 5)


if(filter_var($$this->email, FILTER_VALIDATE_EMAIL)){
// L'adresse email est bonne
}

Attention, le code est bon pour une adresse mail, mais le filter_var filtre la valeur, et en cas de succès retourne la valeur filtrée qui pourrait être un 0, et dans ce cas ton code serait faux, il faut faire un tester incluant le type de retour...

Utiliser plutot :

if (false !== filter_var($this->email, FILTER_VALIDATE_EMAIL)){
// L'adresse email est bonne
}

La différence est minime mais sur le cas de certains filtres, cela peux vous éviter de chercher des heures un petit bug à la con...

Edit : et puis attention, il n'y a pas de double $$ devant $this


RE: Expression reguliere Email - Sephi-Chan - 30-11-2010

(29-11-2010, 09:44 PM)Argorate a écrit : C'est cela oui, et tu as pas trouver plus compliqué non? Big Grin
J'apprecie ton aide, mais je voudrais un truc qui reste maintenable hein :p

Tu comptes maintenir la regexp ? -.-

De plus, une regexp ne suffit pas pour valider une adresse email de manière rigoureuse.

Voici un outil simple de validation d'email pour PHP qui respecte les différentes RFC et leur errata. Il est régulièrement mis à jour et est fourni avec des exemples et des tests unitaires : seule vraie garantie d'un bon fonctionnement.

On peut donc l'utiliser de 2 manières, une version simple (mais tout ça est expliqué dans le readme) :


require_once 'is_email.php';
if (is_email($email)) echo "$email is a valid email address";

Et une version plus avancée :


$email = 'dominic@sayers.cc';
$result = is_email($email, true, E_WARNING);

if ($result === ISEMAIL_VALID) {
echo "$email is a valid email address";
} else if ($result < ISEMAIL_ERROR) {
echo "Warning! $email may not be a real email address (result code $result)";
} else {
echo "$email is not a valid email address (result code $result)";
}

Une fois de plus, n'hésitez pas à chercher des outils efficaces et testé plutôt que d'en créer de mauvais.



Sephi-Chan


RE: Expression reguliere Email - Argorate - 01-12-2010

Merci NicoMSEvent.