Aide-mémoire regex
Les expressions régulières sont assez compactes pour que la syntaxe soit plus facile à consulter qu'à mémoriser. Cette page en contient l'intégralité sur un seul écran — classes, quantificateurs, ancres, groupes, lookaround, échappement et les drapeaux — avec un exemple fonctionnel pour chaque ligne.
La variante est celle de JavaScript, qui est ce qui s'exécute dans votre navigateur et ce qu'utilise le testeur de regex de ce site. L'essentiel est identique en Python, Java, Go et PCRE ; là où les variantes divergent, elles divergent sur les détails — la prise en charge du lookbehind, la syntaxe des groupes nommés, et si \d désigne « chiffre ASCII » ou « n'importe quel chiffre Unicode ».
Deux choses expliquent la plupart des surprises. Les quantificateurs sont gourmands : ils prennent tout ce qu'ils peuvent et ne rendent que lorsque le reste du motif échoue, ce qui explique pourquoi <.+> avale deux balises et <.+?> non. Et l'alternance a la liaison la plus faible de toutes, donc ^a|b$ signifie « commence par a, ou finit par b » — pas ce que la plupart des gens entendent lorsqu'ils l'écrivent.
Classes de caractères
11Les raccourcis se limitent à l'ASCII, sauf si vous ajoutez le drapeau u et utilisez les échappements de propriété Unicode.
| Syntaxe | Signification | Exemple |
|---|---|---|
| . | N'importe quel caractère sauf un saut de ligneAjoutez le drapeau s pour qu'il corresponde aussi aux sauts de ligne. | /a.c/"abc" → "abc" |
| \d | Un chiffre, 0–9 | /\d+/"order 42" → "42" |
| \D | Tout ce qui n'est pas un chiffre | /\D+/"42abc" → "abc" |
| \w | Lettre, chiffre ou tiret basASCII uniquement — « é » n'est pas \w. | /\w+/"user_1!" → "user_1" |
| \W | Tout ce à quoi \w ne correspond pas | /\W+/"a++b" → "++" |
| \s | Tout espace blanc, y compris les tabulations et les sauts de ligne | /\s+/"a \t b" → " \t " |
| \S | Tout caractère non blanc | /\S+/" hi" → "hi" |
| [abc] | L'un quelconque des caractères listés | /[aeiou]/"rhythm and" → "a" |
| [^abc] | Tout caractère sauf ceux listés | /[^aeiou ]+/"aeiou xyz" → "xyz" |
| [a-z] | Une plage de caractères | /[a-f]+/"zzabcz" → "abc" |
| \p{L} | N'importe quelle lettre Unicode (nécessite le drapeau u) | /\p{L}+/"42 café" → "café" |
Quantificateurs
7Tous sont gourmands par défaut : ils prennent autant qu'ils le peuvent et ne rendent que si le reste du motif échoue.
| Syntaxe | Signification | Exemple |
|---|---|---|
| * | Zéro ou plus | /ab*/"a" → "a" |
| + | Un ou plus | /ab+/"abbb" → "abbb" |
| ? | Zéro ou un — le rend optionnel | /colou?r/"color" → "color" |
| {3} | Exactement trois | /\d{3}/"id 12345" → "123" |
| {2,} | Deux ou plus | /a{2,}/"aaa" → "aaa" |
| {2,4} | Entre deux et quatre | /a{2,4}/"aaaaa" → "aaaa" |
| *? | Paresseux — prend le moins possibleLe <.+> gourmand engloutirait les deux balises. | /<.+?>/"<a><b>" → "<a>" |
Ancres et limites
4Ils correspondent à une position, pas à un caractère, et ne consomment donc rien.
| Syntaxe | Signification | Exemple |
|---|---|---|
| ^ | Début de la chaîne, ou d'une ligne avec le drapeau m | /^a/"abc" → "a" |
| $ | Fin de la chaîne, ou d'une ligne avec le drapeau m | /c$/"abc" → "c" |
| \b | Une limite de motC'est ce qui empêche « cat » de correspondre à l'intérieur de « concatenate ». | /\bcat\b/"the cat sat" → "cat" |
| \B | Pas une limite de mot | /\Bcat/"concatenate" → "cat" |
Groupes et alternance
5| Syntaxe | Signification | Exemple |
|---|---|---|
| (abc) | Groupe capturant — mémorisé pour le remplacement | /(\d+)-(\d+)/"10-20" → "10-20" |
| (?:abc) | Groupement sans captureÀ utiliser quand vous n'avez besoin que du groupement ; les numéros de capture restent pertinents. | /(?:ab)+/"abab" → "abab" |
| (?<name>…) | Groupe capturant nommé | /(?<year>\d{4})/"in 2026" → "2026" |
| a|b | L'un ou l'autre — alternanceL'alternance a la priorité la plus faible : ^a|b$ signifie « ^a » ou « b$ », pas « ^(a|b)$ ». | /cat|dog/"one dog" → "dog" |
| \1 | Référence arrière vers le premier groupe | /(\w)\1/"letter" → "tt" |
Lookaround
4Assertions sur ce qui entoure une position. Elles ne correspondent à rien elles-mêmes, ce qui les rend sûres à combiner.
| Syntaxe | Signification | Exemple |
|---|---|---|
| (?=…) | Lookahead — suivi de ceci | /\d+(?= kg)/"80 kg" → "80" |
| (?!…) | Lookahead négatif — non suivi de ceci | /\d+(?! kg)/"80 lb" → "80" |
| (?<=…) | Lookbehind — précédé de ceci | /(?<=\$)\d+/"costs $40" → "40" |
| (?<!…) | Lookbehind négatif — non précédé de ceci | /(?<!\$)\b\d+/"about 40" → "40" |
Échappement
5Ces douze caractères sont ceux qui nécessitent une barre oblique inverse pour être pris au sens littéral.
| Syntaxe | Signification | Exemple |
|---|---|---|
| \. | Un point littéral | /\d\.\d/"v2.5" → "2.5" |
| \\ | Une barre oblique inverse littérale | /\\/"C:\\dir" → "\\" |
| \n | Un saut de ligne | /a\nb/"a\nb" → "a\nb" |
| \t | Une tabulation | /a\tb/"a\tb" → "a\tb" |
| \uFFFF | Un caractère par son point de code | /\u00e9/"café" → "é" |
Drapeaux
6| Drapeau | Nom | Signification |
|---|---|---|
| g | Global | Trouve toutes les correspondances, pas seulement la première. |
| i | Ignorer la casse | Correspond quelle que soit la casse, majuscule ou minuscule. |
| m | Multiligne | Fait correspondre ^ et $ à chaque saut de ligne au lieu de seulement aux extrémités de la chaîne. |
| s | Point-tout | Permet à . de correspondre aussi aux sauts de ligne. |
| u | Unicode | Traite le motif comme des points de code et active les échappements de propriété \p{…}. |
| y | Collant | Ne correspond qu'exactement à lastIndex, sans jamais chercher plus loin. |