Tout à fait d'accord avec Christophe B...
Celui qui désactive Javascript dans son navigateur est vraiment parano puisqu'aucune fonction n'a de réelles incidences sur la sécurité d'un pc (heureusement d'ailleurs) : pas d'accès au disque en lecteure ou écriture et les scripts ne sont actifs que lorsque la page est chargée ; plus de page, plus de script...
Pour en revenir au sujet, perso j'utilise cette fonction, un peu plus poussée que celles expliquées ici (désolé) :
isEmail = function(emailStr) {
var checkTLD = 1;
var knownDomsPat = /^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum|fr)$/;
var emailPat = /^(.+)@(.+)$/;
var specialChars = "\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
var validChars = "\[^\\s" + specialChars + "\]";
var quotedUser = "(\"[^\"]*\")";
var ipDomainPat = /^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
var atom = validChars + '+';
var word = "(" + atom + "|" + quotedUser + ")";
var userPat = new RegExp("^" + word + "(\\." + word + ")*$");
var domainPat = new RegExp("^" + atom + "(\\." + atom +")*$");
var matchArray = emailStr.match(emailPat);
if (matchArray == null) { return false; }
var user = matchArray[1];
var domain = matchArray[2];
for (i=0; i<user.length; i++) {
if (user.charCodeAt(i) > 127) { return false; }
}
for (i=0; i<domain.length; i++) {
if (domain.charCodeAt(i) > 127) { return false; }
}
if (user.match(userPat) == null) { return false; }
var IPArray=domain.match(ipDomainPat);
if (IPArray != null) {
for (var i=1; i<=4; i++) {
if (IPArray[i] > 255) { return false; }
}
return true;
}
var atomPat = new RegExp("^" + atom + "$");
var domArr = domain.split(".");
var len = domArr.length;
for (i=0; i<len; i++) {
if (domArr[i].search(atomPat) == -1) { return false; }
}
if (checkTLD && domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat)==-1) { return false; }
if (len < 2) { return false; }
return true;
}
Cette fonction renvoit un booléen : false en cas d'échec, true si la syntaxe de l'adresse est exacte (ce qui ne veut pas dire qu'elle existe). Disons que ça évite bon nombre d'erreurs de frappe et comme le fait remarquer Christophe B., ça ne dispense pas de faire d'autres tests coté serveur une fois le formulaire soumis...
Petite précision sur la fonction (qui fonctionne très bien sur mes sites depuis des années). Les extensions de domaines définnies au début (.com, .net, etc...) n'ont pas besoin d'etre étendues. Par exemple une adresse email anglaise du type "myaddress@mysite.co.uk" est très bien comprise...
Pour ceux qui s'intéressent de près au Javascript, je préconise de vous pencher sur d'excellentes solutions comme Prototype et/ou Scriptaculous qui font des merveilles et rendent la programmation dans ce langage plus facile. Par contre si c'est juste pour vérifier la syntaxe d'une adresse email, c'est clair que c'est pas très rentable...
function bonmail(mailteste) { var reg = new RegExp('^[a-z0-9]+([_|\.|-]{1}[a-z0-9]+)*@[a-z0-9]+([_|\.|-]{1}[a-z0-9]+)*[\.]{1}[a-z]{2,6}$', 'i'); return(reg.test(mailteste)); }J'ai le même problème donc je me permet de poser ma question! :)
Je travaille sur formulaire ou j'essaye de vérifier la validité de l'email qui est entré par l'utilisateur. J'utilise la fonction que tu as écrite ici mais je ne sais pas comment écrire mon "action" dans le input pour qu'il prenne en compte la fonction... Je suis débutante et ce que j'ai essayé de donne pas grand chose :D.
Voici ma ligne en question :
Merci de votre aide! :)
adresse e mail
pseaudo
code du pseaudo
nombres de jetons souhaiter (pas plus de 50)
et c tt