FmtDev
Langue
Retour au blog
26 mars 2026

5 Patterns Regex que tout développeur devrait connaître

Maîtrisez les 5 patterns d'expressions régulières les plus utiles pour le développement quotidien. Couvre la validation d'emails, la force des mots de passe, la correspondance d'URLs, les adresses IP et l'extraction de dates.

Pourquoi la plupart des développeurs ont du mal avec les Regex

Les expressions régulières sont l'un des outils les plus puissants dans la boîte à outils d'un développeur. Elles peuvent valider des entrées, extraire des données, rechercher du texte et transformer des chaînes de caractères d'une manière qui nécessiterait des dizaines de lignes de code manuellement.

Mais la plupart des développeurs évitent les regex car la syntaxe ressemble à ceci :

^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$

C'est terrifiant. Mais les regex ne sont pas aussi difficiles qu'elles en ont l'air. La plupart des tâches du monde réel utilisent les mêmes patterns encore et encore.

Ce guide couvre les 5 patterns qui gèrent 90% des besoins quotidiens en regex.

Pattern 1 : Validation d'email

La tâche regex la plus courante en développement web.

Version simple (suffisante pour la plupart des cas)

^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$

Décryptage

| Partie | Signification | |---|---| | ^ | Début de la chaîne | | [a-zA-Z0-9._%+-]+ | Un ou plusieurs caractères valides avant le @ | | @ | Le symbole @ littéral | | [a-zA-Z0-9.-]+ | Le nom de domaine | | \. | Un point littéral | | [a-zA-Z]{2,} | Domaine de premier niveau (au moins 2 lettres) | | $ | Fin de la chaîne |

Ce que ça matche

✅ alice@example.com
✅ bob.smith@company.co.uk
✅ user+tag@gmail.com
❌ @missing-local.com
❌ no-at-sign.com
❌ spaces in@email.com

Avertissement important

Aucune regex ne peut valider parfaitement toutes les adresses email selon la RFC 5322. La spécification autorise de nombreux formats inhabituels qui rendraient une regex vraiment conforme longue de milliers de caractères.

Pour un usage en production, validez le format de base avec une regex, puis envoyez un email de confirmation. C'est le seul moyen de vérifier qu'une adresse email fonctionne réellement.

Exemple JavaScript

const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;

function isValidEmail(email) {
  return emailRegex.test(email);
}

isValidEmail("alice@example.com");  // true
isValidEmail("not-an-email");       // false

Pattern 2 : Validation de la force du mot de passe

Appliquer des exigences minimales pour les mots de passe.

Le pattern

^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$

Décryptage

| Partie | Signification | |---|---| | ^ | Début de la chaîne | | (?=.*[A-Z]) | Doit contenir au moins une majuscule | | (?=.*[a-z]) | Doit contenir au moins une minuscule | | (?=.*\d) | Doit contenir au moins un chiffre | | (?=.*[@$!%*?&]) | Doit contenir au moins un caractère spécial | | [A-Za-z\d@$!%*?&]{8,} | Minimum 8 caractères de l'ensemble autorisé | | $ | Fin de la chaîne |

Les parties (?=...) s'appellent des lookaheads. Elles vérifient qu'une condition est remplie sans consommer de caractères. Cela permet d'appliquer plusieurs règles simultanément.

Ce que ça matche

✅ Str0ng!Pass       (majuscule, minuscule, chiffre, spécial, 11 car.)
✅ MyP@ssw0rd        (majuscule, minuscule, chiffre, spécial, 10 car.)
❌ weakpassword      (pas de majuscule, pas de chiffre, pas de spécial)
❌ SHORT!1           (seulement 7 caractères)
❌ NoSpecialChar1    (pas de caractère spécial)

Avertissement important

La validation de mot de passe par regex a ses limites. Elle ne peut pas vérifier :

  • les mots du dictionnaire
  • les caractères répétés (aaaaaa)
  • les séquences (123456)
  • les mots de passe déjà compromis

Pour une vraie sécurité des mots de passe, utilisez une bibliothèque comme zxcvbn qui estime la force réelle basée sur de multiples facteurs.

Pattern 3 : Correspondance d'URL

Extraire ou valider des URLs dans du texte.

Version simple

https?:\/\/[^\s<>"{}|\\^`\[\]]+

Décryptage

| Partie | Signification | |---|---| | https? | "http" ou "https" (le s est optionnel) | | :\/\/ | Le littéral "://" | | [^\s<>"{} | \\^ ` \[\]]+ | Un ou plusieurs caractères qui NE sont PAS des espaces ou des caractères non sûrs pour les URLs |

Ce que ça matche

✅ https://example.com
✅ http://example.com/path?q=hello&lang=en
✅ https://sub.domain.com/page#section
❌ ftp://not-http.com
❌ example.com (pas de protocole)

Exemple JavaScript

const urlRegex = /https?:\/\/[^\s<>"{}|\\^`\[\]]+/g;

const text = "Visitez https://example.com ou http://docs.example.com/guide pour en savoir plus.";
const urls = text.match(urlRegex);
// → ["https://example.com", "http://docs.example.com/guide"]

Le flag g trouve toutes les correspondances, pas seulement la première.

Pattern 4 : Validation d'adresse IPv4

Valider des adresses IP comme 192.168.1.1.

Version simple (format uniquement)

^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$

Version stricte (plage valide 0-255)

^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$

Décryptage de la version stricte

Chaque octet correspond à l'un de :

  • 25[0-5] → 250-255
  • 2[0-4]\d → 200-249
  • [01]?\d\d? → 0-199

Le {3} répète les trois premiers octets (chacun suivi d'un point), puis matche le quatrième sans point final.

Ce que ça matche

✅ 192.168.1.1
✅ 10.0.0.0
✅ 255.255.255.255
❌ 256.1.1.1        (256 hors plage)
❌ 192.168.1        (seulement 3 octets)
❌ 192.168.1.1.1    (5 octets)

Exemple JavaScript

const ipRegex = /^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$/;

ipRegex.test("192.168.1.1");   // true
ipRegex.test("256.1.1.1");     // false
ipRegex.test("10.0.0.0");      // true

Pattern 5 : Extraction de dates (AAAA-MM-JJ)

Matcher et extraire des dates au format ISO 8601.

Le pattern

\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])

Décryptage

| Partie | Signification | |---|---| | \d{4} | Quatre chiffres (année) | | - | Tiret littéral | | (0[1-9]\|1[0-2]) | Mois : 01-12 | | - | Tiret littéral | | (0[1-9]\|[12]\d\|3[01]) | Jour : 01-31 |

Ce que ça matche

✅ 2026-03-26
✅ 2025-12-31
✅ 2000-01-01
❌ 2026-13-01   (mois 13)
❌ 2026-00-15   (mois 00)
❌ 26-03-2026   (mauvais format)

Exemple JavaScript

const dateRegex = /\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])/g;

const text = "L'événement se déroule du 2026-03-15 au 2026-04-20.";
const dates = text.match(dateRegex);
// → ["2026-03-15", "2026-04-20"]

Note importante

Cette regex valide le format mais pas la logique. Elle acceptera 2026-02-31 (31 février) qui n'est pas une date réelle. Pour une validation complète des dates, parsez la chaîne matchée avec une bibliothèque de dates après l'extraction par regex.

Tester les regex en toute sécurité

Lorsque vous construisez et testez des patterns regex, vous avez besoin d'un outil qui vous permet de :

  • écrire le pattern
  • le tester contre des chaînes d'exemple
  • voir les correspondances surlignées en temps réel
  • comprendre ce que chaque partie du pattern fait

De nombreux testeurs de regex en ligne envoient vos chaînes de test à leurs serveurs. Si vous testez des patterns contre des données réelles (fichiers de logs, enregistrements utilisateurs, réponses API), vos données sont transmises à un tiers.

Utilisez un testeur de regex qui s'exécute entièrement dans votre navigateur. Aucune donnée ne devrait quitter votre machine.

Le testeur de regex FmtDev traite tout localement. Vos chaînes de test ne quittent jamais votre navigateur.

Aide-mémoire Regex

| Symbole | Signification | Exemple | |---|---|---| | . | N'importe quel caractère | a.c → "abc", "a1c" | | \d | N'importe quel chiffre | \d{3} → "123" | | \w | N'importe quel caractère mot | \w+ → "hello" | | \s | N'importe quel espace | \s+ → " " | | + | Un ou plus | a+ → "aaa" | | * | Zéro ou plus | a* → "", "aaa" | | ? | Zéro ou un | colou?r → "color", "colour" | | {n} | Exactement n fois | \d{4} → "2026" | | {n,m} | Entre n et m fois | \d{2,4} → "26", "2026" | | ^ | Début de chaîne | ^Hello | | $ | Fin de chaîne | world$ | | [abc] | N'importe lequel parmi a, b ou c | [aeiou] → voyelles | | [^abc] | PAS a, b ou c | [^0-9] → non-chiffres | | (...) | Groupe de capture | (\d{4}) capture l'année | | (?=...) | Lookahead | (?=.*\d) requiert un chiffre | | \| | OU | cat\|dog → "cat" ou "dog" |

Points clés à retenir

  1. La regex email valide le format — envoyez un email de confirmation pour une vraie vérification
  2. La regex mot de passe vérifie les exigences minimales — utilisez zxcvbn pour une estimation réelle de la force
  3. La regex URL matche les liens http/https — ajustez selon vos besoins spécifiques
  4. La regex IPv4 doit vérifier la plage 0-255, pas seulement le nombre de chiffres
  5. La regex date valide le format mais pas la logique — parsez avec une bibliothèque de dates après le matching
  6. Testez toujours les patterns regex localement avec des données réelles — ne collez jamais de chaînes sensibles dans des outils en ligne

Articles connexes

Outil associé

Prêt à utiliser l'outil Testeur et Débogueur Regex Visuel ? Toute l'exécution est locale.

Ouvrir Testeur et Débogueur Regex Visuel