Les expressions régulières sont l’une des rares compétences qui fonctionnent dans tous les langages et tous les éditeurs — et l’une des rares qu’il faut reconsulter tous les six mois. Cet aide-mémoire explique chaque jeton en une phrase, donne un exemple et se termine par les motifs les plus utilisés au quotidien. Tous les exemples se collent directement dans le testeur de regex.
Briques de base d’une regex
| Jeton | Signification | Exemple |
|---|---|---|
. | N’importe quel caractère sauf saut de ligne | a.c correspond à « abc », « a1c » |
d w s | Chiffre, caractère de mot (a–z, 0–9, _), espace | ddd correspond à « 123 » |
D W S | Le contraire de chacun | D+ correspond à « abc » |
b | Limite de mot | bestb correspond à « est », pas à « reste » |
^ $ | Début / fin (de ligne avec le flag m) | ^Bonjour |
| Échapper un caractère spécial | . correspond à un vrai point |
Classes de caractères
[abc]l’un des caractères a, b, c[^abc]tout caractère sauf a, b, c[a-z],[0-9],[A-Za-zÀ-ÿ]plages ; les lettres accentuées doivent être incluses explicitement- Entre crochets, la plupart des spéciaux perdent leur sens :
[.]est un vrai point
Quantificateurs
| Jeton | Signification |
|---|---|
* | 0 ou plus |
+ | 1 ou plus |
? | 0 ou 1 |
{3} {2,5} {2,} | exactement 3, de 2 à 5, au moins 2 |
*? +? ?? | « paresseux » : le moins possible |
Le classique : <.+> sur « <b>gras</b> » capture toute la chaîne parce que + est gourmand. <.+?> ne capture que « <b> ».
Groupes
(abc)groupe capturant : disponible ensuite comme $1, $2…(?:abc)groupe non capturant : sert juste à grouper, plus rapide(?<annee>d{4})groupe nommé : dans le remplacement, $<annee>a|balternative : « a ou b » ; parenthésez pour limiter la portée :gr(i|a)s1référence arrière :(w)1capture les lettres doublées comme « ll »
Lookarounds
| Jeton | Signification | Exemple |
|---|---|---|
(?=x) | suivi de x (hors capture) | d+(?= €) capture « 49 » dans « 49 € » |
(?!x) | non suivi de x | bfoo(?!bar) |
(?<=x) | précédé de x | (?<=€)d+ |
(?<!x) | non précédé de x | (?<!d)d{4}(?!d) : exactement quatre chiffres |
Flags
- g toutes les correspondances au lieu de la première
- i ignorer la casse
- m ^ et $ agissent par ligne
- s . capture aussi les sauts de ligne
- u Unicode : nécessaire pour les emojis et p{L}
- y « sticky » : uniquement à la position courante
Les dix motifs dont on a toujours besoin
- E-mail (pragmatique) :
^[w.+-]+@[w-]+.[w.-]+$ - URL :
https?://[^s/$.?#].[^s]* - Date JJ/MM/AAAA :
^(0[1-9]|[12]d|3[01])/(0[1-9]|1[0-2])/d{4}$ - Date ISO :
^d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]d|3[01])$ - IPv4 :
^((25[0-5]|2[0-4]d|1?d?d).){3}(25[0-5]|2[0-4]d|1?d?d)$ - Code postal français :
^(0[1-9]|[1-8]d|9[0-5])d{3}$ - Téléphone (souple) :
^+?[ds()/.-]{7,}$ - Couleur hexadécimale :
^#([0-9a-fA-F]{3}){1,2}$ - Supprimer les espaces en bordure :
^s+|s+$→ remplacer par rien - Espaces doubles :
{2,}→ remplacer par un espace
Trois erreurs que tout le monde fait
- Quantificateurs gourmands avec du HTML ou des guillemets : utilisez
+?. - Point non échappé :
example.comcorrespond aussi à « exampleXcom ». - Flag g oublié, puis surprise que seule la première occurrence soit remplacée.
Remplacer avec des groupes
Motif (w+)@(w+).fr, remplacement $2:$1 transforme « marie@societe.fr » en « societe:marie ». Groupes nommés : $<nom>. La correspondance complète est $&.
Gratuit, fonctionne dans votre navigateur, rien n’est envoyé, sans inscription.
Continuer la lecture
Plus de Outils développeur et code.


