Bonjour,

Pour vérifier une adresse j'utilise ce "masque de saisie" et je comprend le caractère de départ et celui d'arrivée mais je souhaiterais savoir expliquer le formatage complet:


<input class="obligatoire" pattern="^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$" placeholder="Saisissez votre email" type="text" id="mail" required>


si vous pouviez m'aider à analyser ou me donner une adresse internet ou cette pattern serait expliquée car je n'ai pas trouvé.

Merci de votre aide.
\w correspond aux caractères alphanumérique plus l'underscrore.
Les [ ] permettent quand à eux de définir une plage de caractères. Ainsi [\w.-] définit tous les caractères alphanumérique, l'underscore, le point et le tiret : trotiuy656_lk.truc
[a-zA-Z] signifie uniquement les lettres. {2,6} est la plage de répétition.
Mais pour filtré un adresse mail il manque des petit truc comme le fait que deux points ne peuvent pas se suivre. Or ta règle autorise .......@........tld, qui n'est pas un adresse mail valide, tu en conviendras Smiley smile
Si tu veux en savoir un peu plus la dessus, fait une recherche sur les expressions régulières
autrement appelées regex. Tu trouveras énormément de ressources la dessus et d'excellents tuto.
Modifié par Hikingyo (04 Dec 2013 - 00:07)
JE vois que c'est pour une adresse e-mail, alors deux remarques :
1 - Tu devrais utiliser type="email". Ca permet sur les mobiles d'avoir le @ sur le clavier virtuel principal, et certains navigateurs font une première vérification avant envoi (ce n'est pas le cas actuellement mais ça devrait)
2 - IL est assez difficile de vérifier strictement une adresse e-mail avec un pattern home made; il vaut mieux laisser cette tâche de vérification au serveur (pour lequel des fonctions approuvées existent), et éventuellement au navigateur en plus mais avec un pattern standard.

Il est interdit d'avoir deux tirets ou points consécutifs, mais ajouter cette vérification complexifie notablement le pattern qui pourrait devenir quelque chose comme :
^\w+(?:[-.+]\w+)*@\w+(?:[-.]\w+)*\.[a-z]{2,6}$
ET en plus le souligné n'est pas permis dans les noms de domaines donc il faut remplacer \w par [a-zA_Z0-9]. ET il manque encore les IDN en UTF-8 et leur correspondance en ASCII (genre xn--...-bbb.tld) alors bonne chance...
Modifié par QuentinC (04 Dec 2013 - 12:10)