Développement

Regex pour valider e-mails, URL et numéros de téléphone

Les regex de validation sont plus copiées que tout autre type de motif, et beaucoup sont subtilement fausses. Voici des motifs qui fonctionnent dans de vrais formulaires, ce que fait chaque partie, et les cas où une expression régulière n’est pas le bon outil.

Intermédiaire · 8 min de lecture · Mis à jour le 30 octobre 2026

Regex pour valider e-mails, URL et numéros de téléphone

Valider de façon souple, vérifier pour de bon

Une regex peut indiquer qu’une saisie ressemble à une adresse e-mail ; seul l’envoi d’un message prouve qu’elle existe. Les motifs trop stricts rejettent de vrais utilisateurs — signes plus, domaines longs, noms internationaux — tout en laissant passer les fautes de frappe. Visez des motifs qui repèrent les erreurs évidentes, puis vérifiez.

Adresses e-mail

Un motif pragmatique qui couvre presque toutes les adresses réelles :

^[^\s@]+@[^\s@]+\.[^\s@]{2,}$

Une partie locale, un @, un domaine avec un point, et aucun espace. Il accepte ada+news@example.co.uk et rejette ada@example et ada @example.com. Une version un peu plus stricte pour la partie locale :

^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$

Celle-ci rejette les adresses internationalisées (comme josé@example.com) ; privilégiez donc la première si vos utilisateurs sont dans le monde entier. En HTML, <input type="email"> effectue déjà une validation selon la règle propre au navigateur. Pour vérifier qu’un domaine peut réellement recevoir des e-mails, consultez son enregistrement MX avec le Email DNS Checker.

URL

N’écrivez pas de regex pour les URL : analysez-les. Tous les environnements modernes disposent d’un analyseur d’URL qui connaît les règles :

function isHttpUrl(value) {
  try {
    const u = new URL(value);
    return u.protocol === 'http:' || u.protocol === 'https:';
  } catch {
    return false;
  }
}

La vérification du protocole est essentielle : new URL('javascript:alert(1)') s’analyse sans erreur, et cette chaîne ne doit jamais se retrouver dans un href. Si vous avez besoin d’une regex pour repérer des URL dans un texte, utilisez un motif simple et analysez ensuite chaque correspondance :

https?:\/\/[^\s<>"']+

Décomposez une URL en protocole, hôte, chemin et paramètres de requête avec le URL Parser.

Numéros de téléphone

Les formats varient selon les pays : la regex la plus sûre se contente donc de nettoyer la saisie. Supprimez tout sauf les chiffres et un signe plus en début de chaîne, puis vérifiez la longueur selon la norme E.164 (15 chiffres au maximum) :

const clean = input.replace(/(?!^\+)[^\d]/g, '');
const ok = /^\+?[1-9]\d{6,14}$/.test(clean);

Pour une validation réelle par pays — indicatifs régionaux, mobile ou fixe — utilisez une bibliothèque comme libphonenumber. Voici un motif réservé à l’Amérique du Nord, si c’est le seul format que vous acceptez :

^\(?([2-9]\d{2})\)?[-.\s]?(\d{3})[-.\s]?(\d{4})$

Tester avant la mise en production

Collez un motif dans le Regex Tester avec une liste d’exemples valides et invalides, un par ligne, et activez l’indicateur multiligne pour que ^ et $ correspondent à chaque ligne. Si un motif hérité est illisible, le Regex Explainer le décompose élément par élément. Méfiez-vous du backtracking catastrophique : les quantificateurs imbriqués comme (a+)+ peuvent bloquer un serveur avec une saisie malveillante.

Questions fréquentes

Quelle est la meilleure regex pour valider un e-mail ?
Une regex simple : ^[^\s@]+@[^\s@]+\.[^\s@]{2,}$. Les motifs complexes de type RFC rejettent des adresses valides et ne peuvent de toute façon pas prouver que la boîte existe : pour cela, envoyez un e-mail de confirmation.
Faut-il valider les URL avec une regex ?
Non. Utilisez l’analyseur d’URL intégré à votre langage (new URL() en JavaScript, urllib.parse en Python) et vérifiez que le protocole est http ou https.
Pourquoi ma regex fonctionne-t-elle sur une ligne mais pas dans une liste ?
Sans l’indicateur m (multiligne), ^ et $ correspondent au début et à la fin de tout le texte, et non à chaque ligne.

À lire aussi