Bibliothèque de motifs regex, gratuite

Plus de 60 motifs regex prêts à l'emploi. Recherchez, copiez et testez en ligne.

À propos de cette bibliothèque

C'est une collection organisée et cherchable de plus de 60 motifs d'expression régulière couramment utilisés, rangés par catégorie. Chaque motif comprend une description, l'expression elle-même et des exemples de correspondances. Cliquez sur un motif pour le copier, ou utilisez le panneau de test rapide pour valider un texte contre lui directement sur cette page.

Tout s'exécute dans votre navigateur · aucun motif ni texte de test n'est envoyé nulle part. Utilisez ces motifs en JavaScript, Python, PHP, Java, Go ou tout langage qui prend en charge les expressions régulières. Pour des tests plus avancés avec drapeaux et groupes de capture, essayez notre Test et débogage de regex en ligne, gratuits.

Comment ça marche

  1. Parcourez ou recherchez : parcourez les motifs par catégorie (validation, extraction, formatage) ou recherchez par nom ou cas d'usage.
  2. Prévisualisez le motif : chaque entrée affiche la regex, une description de ce qu'elle capture, des entrées d'exemple avec correspondances et les limites.
  3. Testez avec vos données : entrez votre propre chaîne de test pour vérifier que le motif capture bien ce que vous attendez.
  4. Copiez pour utiliser : copiez le motif regex au format JavaScript, Python ou POSIX pour votre code.

Pourquoi utiliser la bibliothèque de regex ?

Écrire des expressions régulières de zéro est long et sujet aux erreurs. Les motifs fréquemment nécessaires pour valider des e-mails, faire correspondre des URL, extraire des numéros de téléphone, détecter des cartes de crédit, analyser des dates ou valider des adresses IP ont des solutions éprouvées, mais trouver une version fiable exige de chercher sur Stack Overflow, d'en évaluer la justesse et d'en vérifier les cas limites. Cette bibliothèque réunit des motifs vérifiés avec leurs cas limites documentés, leurs limitations connues et des cas de test concrets. C'est plus rapide que d'en écrire un soi-même et plus fiable que de copier-coller depuis des sources Internet aléatoires sans test.

Catégories de motifs

D'où viennent les expressions régulières

L'idée mathématique d'« ensemble régulier » a été formalisée par Stephen Cole Kleene en 1951 dans le mémoire de recherche RAND Representation of Events in Nerve Nets and Finite Automata. L'opérateur * de cette page s'appelle toujours étoile de Kleene en son honneur. Ken Thompson a transformé la théorie en algorithme dans son article de juin 1968 du Communications of the ACM, Programming Techniques: Regular Expression Search Algorithm, et a livré la première implémentation de regex dans l'éditeur QED aux Bell Labs. En 1973, le même moteur alimentait ed, puis grep (le développement littéral est « globally search for regular expression and print »), sed et awk. Le Perl (1987) de Larry Wall, et surtout Perl 5 (1994), a ajouté les groupes nommés, l'anticipation/rétrospective, les quantificateurs non gourmands et la gestion Unicode qui sont devenus le dialecte de facto connu sous le nom de PCRE, porté en C par Philip Hazel en 1997.

Variantes de moteur et ce qui change entre elles

Un motif qui s'exécute proprement en JavaScript peut échouer silencieusement en Go et être carrément rejeté en POSIX. Les cinq variantes qu'un développeur est le plus susceptible de rencontrer :

Retour arrière catastrophique et ReDoS

La plupart des moteurs regex des langages courants (PCRE, Java, JS V8 / SpiderMonkey / JavaScriptCore, Python re, .NET) sont des moteurs à retour arrière. Quand un motif avec quantificateurs imbriqués comme (a+)+ rencontre une entrée qui correspond presque, le moteur peut essayer un nombre exponentiel de chemins alternatifs avant d'abandonner. C'est le retour arrière catastrophique, base de la classe d'attaques ReDoS (Regular expression Denial of Service) cataloguée par OWASP.

Stack Overflow, 20 juillet 2016 : un motif conçu pour rogner les espaces en début et fin, appliqué à un corps de question contenant 20 000 caractères d'espacement consécutifs, a pris 11 minutes de CPU par requête et a rendu le site inaccessible pendant 34 minutes. Le post-mortem sur le blog officiel Stack Status a recommandé de remplacer les regex de rognage par le trim natif de chaîne.

Cloudflare, 2 juillet 2019 : une règle WAF contenant le motif à quantificateurs imbriqués .*(?:.*=.*) a été déployée globalement et a consommé 100 % du CPU sur chaque serveur edge pendant 27 minutes, mettant hors ligne de larges portions d'internet public. Le post-mortem de Cloudflare sur leur blog a crédité le passage à la crate regex de Rust (un moteur basé sur RE2, temps linéaire) pour avoir évité la récidive.

Les leçons défensives : éviter les quantificateurs imbriqués ((a+)+, (a*)*, (a|aa)+) ; éviter les rognages style \s+$ sur des entrées contrôlées par l'attaquant ; préférer les groupes atomiques (?>...) ou les quantificateurs possessifs a++ en PCRE ; et pour les services à haut débit, envisager un moteur basé sur RE2.

Email, URL, téléphone, date, carte de crédit : quand ne pas utiliser regex

Email. La grammaire complète de la RFC 5322 (octobre 2008) se compile en une regex d'environ 3 000 caractères. La spécification HTML5 du W3C pour la validation <input type="email"> utilise une regex beaucoup plus courte « est-ce plausiblement un email » qui est le bon point de départ pour les indications côté client. La RFC 6531 (février 2012) autorise les adresses non-ASCII comme 用户@example.com, qu'une regex ASCII-only rejettera à tort. Le consensus de l'industrie depuis la RFC 6532 : ne validez pas les emails avec une regex, envoyez plutôt un email de vérification.

URL. La RFC 3986 (janvier 2005) est la spec de syntaxe générique URI, mais le WHATWG URL Living Standard en diverge délibérément pour correspondre à ce que les navigateurs acceptent réellement. Utilisez new URL("...") en JavaScript ou urllib.parse en Python plutôt qu'une regex au-delà d'une vérification visuelle rapide.

Numéros de téléphone. La Recommandation E.164 de l'UIT-T (révision actuelle novembre 2010) permet jusqu'à 15 chiffres avec un préfixe + optionnel, mais les règles spécifiques aux pays varient énormément. La bibliothèque open source de Google libphonenumber encode les règles par pays pour chaque territoire et est le seul validateur fiable inter-pays.

Dates. Une regex comme ^\d{4}-\d{2}-\d{2}$ correspond au format calendrier ISO 8601-1:2019, mais elle accepte aussi 2026-02-31. La validité d'une date nécessite la logique calendaire, pas la correspondance de motif ; utilisez Date.parse() ou une bibliothèque de dates.

Cartes de crédit. Une regex peut faire correspondre la longueur en chiffres et le préfixe IIN (Visa commence par 4, Mastercard par 51-55 ou 2221-2720, Amex par 34 ou 37) mais ne peut pas vérifier la somme de contrôle Luhn (Hans Peter Luhn, IBM, brevet US 2 950 048 délivré en août 1960). Luhn nécessite une somme chiffre par chiffre modulo 10.

Façons courantes dont les développeurs utilisent cette bibliothèque

Erreurs courantes

Plus de questions fréquentes

Pourquoi certains motifs utilisent-ils (?:...) au lieu de (...) ?

(?:...) est un groupe non capturant : il groupe pour la répétition ou l'alternance mais n'alloue pas de slot de rétroréférence. Plus rapide et évite de polluer $1, $2 dans le tableau de résultats. Utilisez (...) quand vous avez besoin d'extraire le texte capturé ; utilisez (?:...) pour le groupement seul.

Quels sont les drapeaux regex les plus courants ?

i insensible à la casse, g global (trouver tout, comportement spécifique JS), m multilignes (donc ^ et $ correspondent aux frontières de ligne), s dotAll (donc . correspond aux retours à la ligne, ES2018+), u Unicode (ES2015+), y sticky (ES2015+), d hasIndices (ES2022+), v classes en notation d'ensemble (ES2024+). Combinez avec /pattern/gimsu.

Comment faire correspondre un caractère spécial littéral ?

Échappez-le avec une barre oblique inverse. Les métacaractères regex à échapper pour une correspondance littérale sont : . ^ $ * + ? ( ) [ ] { } | \ /. Dans une classe de caractères [...] l'ensemble des caractères spéciaux est plus petit : seuls ] \ ^ - ont besoin d'échappement, selon la position.

Puis-je utiliser les motifs de cette bibliothèque dans des scripts shell ?

Oui, avec des réserves. grep utilise POSIX BRE par défaut ; grep -E utilise ERE ; grep -P utilise PCRE sur les systèmes où libpcre est lié (GNU grep, macOS grep avec Homebrew). Les motifs utilisant l'anticipation, les groupes nommés ou les échappements Unicode nécessitent grep -P ou ripgrep (qui utilise le moteur RE2-based de Rust et rejette l'anticipation).

Ces motifs sont-ils envoyés à un serveur ?

Non. Chaque regex de cette page, chaque recherche que vous tapez et chaque chaîne testée dans le panneau de test rapide est traitée par le moteur JavaScript de votre navigateur. Aucun appel réseau n'est effectué. Les données de motif elles-mêmes sont livrées comme fichier JSON statique dans le bundle de la page. Ouvrez l'onglet Réseau dans DevTools pour vérifier.

Outils associés