Regex d'e-mail : des motifs prêts à copier qui marchent vraiment
Trois regex d'e-mail prêtes à copier (simple, pratique et stricte), quand utiliser chacune, et les erreurs courantes qui rejettent de vraies adresses.

· 6 min de lecture · Mis à jour le
/^[^\s@]+@[^\s@]+\.[^\s@]+$/
à attraper
- ana@site.com
- x+t@site.io
- jo@mail.co.uk
à épargner
- ana@example
- @site.com
- a@@b.io
01Regex d'e-mail prêtes à copier
| Motif | À utiliser quand |
|---|---|
^\S+@\S+$ |
Simple. Une vérification rapide, par exemple pour filtrer des logs ou dans un champ de recherche. |
^[^\s@]+@[^\s@]+\.[^\s@]+$ |
Pratique (notre choix). Formulaires d'inscription et de contact : toutes les vraies adresses passent, pas les fautes de frappe courantes. |
^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$ |
Stricte. Vous devez accepter exactement ce qu'accepte le champ type="email" d'un navigateur. |
Essayez-les sur vos propres adresses dans le bac à sable, ou entraînez-vous avec le pack Validateurs de formats. La suite de l'article explique pourquoi le motif pratique est le bon choix par défaut.
Cherchez « regex e-mail » et vous trouverez des motifs de toutes les tailles, de dix caractères à plusieurs milliers. Certains ont tenté de faire tenir toute la norme des adresses e-mail dans une seule expression régulière, et le résultat est réputé illisible.
La bonne nouvelle : vous n'avez besoin de rien de tout cela. Voici le motif que nous recommandons, pourquoi les motifs plus stricts causent plus de problèmes qu'ils n'en évitent, et ce qu'il faut faire à la place. Tous les exemples sont interactifs : modifiez les motifs et observez ce qui change.
02Pourquoi la regex d'e-mail « parfaite » n'existe pas
Le format des adresses e-mail autorise bien plus de choses qu'on ne l'imagine. Toutes celles-ci sont valides :
x+newsletter@site.io(une étiquette après un plus, pour filtrer le courrier)j.doe@mail.co.uk(un sous-domaine et une terminaison de pays en deux parties)ana@studio.photography(un domaine de premier niveau long)josé@exemplo.com.br(des lettres non anglaises, acceptées par les serveurs de messagerie qui gèrent les adresses internationales)
Et un motif ne peut pas vous dire si une adresse existe. ana@example.com a une forme parfaite et peut pourtant revenir en erreur. La seule vraie vérification consiste à envoyer un message et à demander à la personne de cliquer sur un lien.
Le rôle d'une regex est donc plus modeste qu'il n'y paraît : repérer les fautes de frappe évidentes avant d'envoyer ce message.
03Le motif que nous recommandons
/^[^\s@]+@[^\s@]+\.[^\s@]+$/Doit correspondre5/5
- ana@example.com
- j.doe@mail.co.uk
- x+tag@site.io
- ana@studio.photography
- josé@exemplo.com.br
Ne doit pas4/4
- ana@example
- ana@@example.com
- ana @example.com
- @example.com
Lisez-le en quatre parties :
^[^\s@]+un ou plusieurs caractères qui ne sont ni un espace ni un@@exactement une arobase[^\s@]+\.un nom de domaine, puis un point littéral[^\s@]+$le reste du domaine, jusqu'à la fin
Il est court, lisible, et ne rejette personne qui possède une vraie adresse.
04Erreur n° 1 : oublier les ancres
Sans ^ ni $, une regex n'a besoin de trouver un morceau en forme d'e-mail que quelque part dans le texte :
05Erreur n° 2 : être trop strict
Les motifs d'e-mail les plus répandus en ligne ressemblent à celui-ci. Il a l'air soigné, et il laisse de vraies personnes à la porte :
/^[\w.]+@\w+\.[a-z]{2,4}$/Doit correspondre1/1
- ana@example.com
Ne doit pas3/3
- j.doe@mail.co.uk
- x+tag@site.io
- ana@studio.photography
Il échoue de trois façons à la fois :
\w+avant le point n'autorise qu'une seule partie de domaine :mail.co.ukéchoue.[\w.]ne contient pas de+: les adresses avec une étiquette après un plus échouent.[a-z]{2,4}suppose que les domaines de premier niveau sont courts. Des centaines sont plus longs :.photography,.software,.museum.
Même une version plus soignée, ^[\w.+-]+@[\w-]+(\.[\w-]+)+$, rejette encore josé@exemplo.com.br, car \w ne couvre que les lettres anglaises dans la plupart des moteurs. Une vraie adresse rejetée, c'est une inscription perdue. Une faute de frappe qui passe sera de toute façon repérée par l'e-mail de confirmation.
06Ce qu'utilisent les navigateurs
Le <input type="email"> du HTML vérifie les adresses avec son propre motif, publié dans la norme HTML :
/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/Si vous utilisez type="email" dans un formulaire, le navigateur fait déjà cette vérification pour vous. C'est généralement suffisant côté front-end.
07Une version golf de regex
La validation et le golf n'ont pas le même but. Un validateur doit être sûr quelle que soit la saisie. Un plateau de golf n'a qu'à séparer ces mots-là : vous pouvez donc viser la plus petite différence.
Chaque monstre ci-dessous a une lettre juste avant le @ et un point quelque part après. Chaque innocent enfreint l'une de ces règles :
Attrapez les chaînes qui ressemblent à un e-mail, épargnez celles qui sont mal formées.
Cibles · 0/4 attrapées
- ana@site.comcible
- bo@mail.iocible
- x.y@z.orgcible
- k@q.devcible
Innocents · erreurs : 0
- ana@siteinnocent
- @mail.ioinnocent
- bo@@z.orginnocent
- site.cominnocent
- a.b@cinnocent
Tapez une regex — le plateau se met à jour en direct.
08Récapitulatif
- Utilisez
^[^\s@]+@[^\s@]+\.[^\s@]+$ou letype="email"du navigateur. - Ancrez toujours avec
^et$quand vous validez une saisie entière. - Ne limitez pas les domaines de premier niveau à 2 à 4 lettres.
- Ne rejetez ni le
+, ni les points supplémentaires dans le domaine, ni les lettres non anglaises. - Envoyez un e-mail de confirmation. C'est le seul test qui prouve que l'adresse fonctionne.
09Continuez à vous entraîner
- Le guide contient une section de motifs courants avec des exemples interactifs.
- Essayez la chasse du jour.