🧰 ToolPicoTous les outils →
AccueilBlog › Comment valider un e-mail ou un téléphone avec une regex ?

Comment valider un e-mail ou un numéro de téléphone avec une regex ?

Un formulaire d'inscription accepte des adresses e-mail manifestement invalides, ou refuse des numéros de téléphone pourtant corrects ? Le problème vient presque toujours d'un motif d'expression régulière (regex) mal écrit ou jamais testé sur de vrais exemples. Ce guide explique comment construire, tester et déboguer un motif regex de validation, étape par étape.

Sommaire

Qu'est-ce qu'une regex de validation ?

Réponse rapideUne regex de validation est un motif qui décrit la forme exacte qu'une donnée doit avoir — par exemple « des chiffres, puis un tiret, puis encore des chiffres » — et un moteur regex compare ce motif au texte saisi pour dire s'il correspond ou non.

Concrètement, une expression régulière est une suite de symboles qui décrit un motif dans du texte : \d désigne un chiffre, [a-z] une lettre minuscule, + signifie « une ou plusieurs fois », et ^/$ ancrent le motif au début et à la fin de la chaîne. Les regex servent surtout à la validation de formulaires (e-mail, téléphone, code postal, mot de passe), à la recherche-remplacement de texte et à l'extraction de données dans un fichier journal.

Le point délicat : une regex mal écrite peut sembler fonctionner sur un ou deux exemples, puis échouer silencieusement sur une variante plus rare (un e-mail avec un sous-domaine, un numéro avec des espaces au lieu de tirets). C'est pourquoi il vaut mieux la vérifier sur un vrai jeu d'exemples avant de la mettre en production, avec un testeur regex qui surligne les correspondances en direct plutôt qu'à l'aveugle.

Valider un e-mail : le motif qui fonctionne (et ses limites)

Réponse rapideLe motif ^[\w.+-]+@[\w-]+\.[a-zA-Z]{2,}$ couvre la grande majorité des adresses e-mail réelles : nom d'utilisateur (lettres, chiffres, point, plus, tiret), un @, un domaine, et une extension d'au moins deux lettres.

Ce motif n'est pas une implémentation complète de la RFC 5322 (la norme technique qui définit un e-mail valide en théorie) — cette norme autorise des cas si exotiques (guillemets, commentaires) qu'aucun formulaire web ne les gère réellement. En pratique, le motif simplifié ci-dessus suffit pour la quasi-totalité des cas d'usage courants.

Voici, à titre d'exemple illustratif, comment ce motif se comporte sur quelques entrées types :

Entrée testéeRésultatPourquoi
nom@exemple.com✓ CorrespondStructure complète et valide
prenom.nom+tag@societe.co.uk✓ CorrespondPoint et signe + autorisés dans le nom d'utilisateur
e-mail-invalide✗ Ne correspond pasAucun @ ni domaine
@domaine-sans-nom.com✗ Ne correspond pasNom d'utilisateur vide avant le @

Pour un numéro de téléphone français, un motif courant est ^(?:+33|0)\s?[1-9](?:[\s.-]?\d{2}){4}$ : il accepte l'indicatif +33 ou un 0 initial, suivi de quatre groupes de deux chiffres séparés par un espace, un point ou un tiret facultatif. Comme pour l'e-mail, ce motif ne vérifie que le format — il ne confirme pas qu'un numéro est réellement attribué à une ligne active.

Groupes de capture : extraire une information, pas seulement la valider

Réponse rapideEntourer une partie du motif de parenthèses, comme (\d{4})-(\d{2})-(\d{2}), crée des « groupes de capture » qui permettent de récupérer séparément chaque portion correspondante — utile pour reformater une date ou extraire un code postal d'une adresse complète.

Un groupe non capturant, écrit (?:...), sert à grouper une répétition sans créer de numéro de groupe supplémentaire — pratique quand on veut juste répéter un bloc sans en extraire le contenu. Un groupe nommé, (?<annee>\d{4}), permet de référencer le résultat par un nom plutôt qu'un numéro, ce qui rend le code plus lisible dans une opération de recherche-remplacement (par exemple $<annee> au lieu de $1).

Scénario concret : vous recevez des dates au format 2026-07-29 et devez les afficher en 29/07/2026. Avec le motif (\d{4})-(\d{2})-(\d{2}) et le remplacement $3/$2/$1, l'aperçu de recherche-remplacement transforme instantanément chaque date sans écrire une ligne de code — utile pour valider la logique avant de la coder dans son langage cible.

Tester son motif sur plusieurs exemples à la fois

Réponse rapidePlutôt que de coller un exemple à la fois, on peut lister plusieurs cas qui doivent correspondre et plusieurs cas qui ne doivent pas correspondre, puis laisser l'outil comparer chaque ligne au motif et signaler en vert ou en rouge les réussites et les échecs.

Cette approche façon « tests unitaires » est particulièrement utile pour un motif de validation qu'on va réutiliser dans une application : elle permet de vérifier en une fois qu'un motif accepte bien tous les formats attendus (avec ou sans indicatif, avec espaces ou tirets) tout en rejetant les entrées clairement invalides. Le Testeur Regex de ToolPico propose cet onglet « Tests » avec un résumé du type « X/Y tests réussis », en plus du surlignage en direct, de l'explication du motif morceau par morceau et d'un générateur de code équivalent pour JavaScript, Python, PHP et Java.

Remarque sur la précision : l'outil utilise le moteur regex ECMAScript (JavaScript) du navigateur. PCRE (PHP), le module re de Python et le moteur Java partagent l'essentiel de la syntaxe, mais peuvent différer légèrement sur des fonctionnalités avancées — testez toujours le code généré dans le langage cible.

Surlignage en direct, groupes de capture, recherche-remplacement, explication du motif et générateur de code — gratuit et 100% dans le navigateur.

Essayer le Testeur Regex →

Questions fréquentes

Comment teste-t-on un motif regex ?
Écrivez votre motif regex dans un outil de test et saisissez le texte que vous voulez vérifier pour voir les correspondances en direct. Dans le Testeur Regex de ToolPico, après avoir saisi votre motif et vos drapeaux (g, i, m, s, u), les portions du texte qui correspondent sont automatiquement surlignées en couleur ; les groupes de capture, les informations de position et les groupes nommés sont listés dans un tableau séparé.
Quel est un exemple de regex pour un e-mail ?
Un motif de validation d'e-mail pratique est ^[\w.+-]+@[\w-]+\.[a-zA-Z]{2,}$ : il recherche des lettres, chiffres, tiret bas, point, plus ou tiret dans le nom d'utilisateur, un signe @, un nom de domaine et une extension d'au moins deux lettres. Un regex d'e-mail totalement conforme à la RFC 5322 est bien plus complexe ; en pratique, ce motif simplifié suffit pour la plupart des validations de formulaire.
Comment écrit-on un regex pour un numéro de téléphone français ?
Le motif ^(?:+33|0)\s?[1-9](?:[\s.-]?\d{2}){4}$ accepte l'indicatif +33 ou un 0 initial suivi de quatre groupes de deux chiffres, avec espace, point ou tiret optionnel entre eux. Ce motif ne vérifie que le format ; il ne confirme pas qu'un numéro est réellement attribué.
Un testeur de regex en ligne est-il sûr à utiliser pour des données sensibles ?
Dans le Testeur Regex de ToolPico, votre motif et votre texte de test sont traités entièrement dans votre navigateur (JavaScript côté client) ; rien n'est envoyé à un serveur, enregistré ou journalisé. Lorsque vous créez un lien partageable, seuls le motif et les drapeaux sont ajoutés à l'URL — votre texte de test, qui peut contenir des données personnelles, n'est jamais inclus dans le lien.
Comment savoir si mon motif regex est lent ou risque le backtracking catastrophique ?
L'outil affiche en direct le temps d'exécution de votre motif sur votre texte de test ainsi que le nombre d'étapes de correspondance effectuées, et un scan heuristique signale les structures classiquement à risque, comme un quantificateur imbriqué (a+)+. C'est une aide au diagnostic locale ; testez toujours avec un texte représentatif de vos données réelles.

Guides connexes

À propos de ce guide : les exemples numériques et de motifs regex de cet article sont fournis à titre illustratif pour expliquer le fonctionnement de l'outil ; ils ne constituent pas un conseil technique, juridique ou de conformité pour un cas d'usage spécifique. Testez toujours vos propres motifs sur vos propres données avant une mise en production.