Aide-mémoire Regex
Les expressions régulières sont suffisamment compactes pour que la syntaxe soit plus facile à rechercher qu'à mémoriser. Cette page représente l'intégralité de la page sur un seul écran : classes, quantificateurs, ancres, groupes, recherche, échappement et indicateurs – avec un exemple fonctionnel pour chaque ligne.
La saveur est JavaScript, c'est ce qui s'exécute dans votre navigateur et ce que le testeur d'expressions régulières de ce site utilise. La plupart sont identiques en Python, Java, Go et PCRE ; là où les saveurs divergent, elles divergent sur les bords - prise en charge de la recherche derrière, syntaxe de groupe nommé et si \d signifie "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 le rendent que lorsque le reste du modèle échoue, c'est pourquoi <.+> avale deux balises et <.+?> ne le fait pas. Et l'alternance est la plus lâche de toutes, donc ^a|b$ signifie "commence par a ou se termine par b" - ce n'est pas ce que la plupart des gens veulent lorsqu'ils l'écrivent.
Classes de personnages
Les raccourcis sont uniquement en ASCII, sauf si vous ajoutez l'indicateur 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 également aux nouvelles lignes. | /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 trait de soulignementASCII uniquement — "é" n'est pas \w. | /\w+/"user_1!" → "user_1" |
| \W | Tout ce qui est \w ne correspond pas | /\W+/"a++b" → "++" |
| \s | Tout espace, y compris les tabulations et les nouvelles lignes | /\s+/"a \t b" → " \t " |
| \S | Tout caractère autre qu'un espace | /\S+/" hi" → "hi" |
| [abc] | L'un des personnages répertoriés | /[aeiou]/"rhythm and" → "a" |
| [^abc] | N'importe quel personnage sauf ceux répertoriés | /[^aeiou ]+/"aeiou xyz" → "xyz" |
| [a-z] | Une gamme de personnages | /[a-f]+/"zzabcz" → "abc" |
| \p{L} | Toute lettre Unicode (nécessite le drapeau u) | /\p{L}+/"42 café" → "café" |
Quantificateurs
Tous ces éléments sont gourmands par défaut : ils prennent autant qu’ils peuvent et ne rendent que si le reste du modèle échoue.
| Syntaxe | Signification | Exemple |
|---|---|---|
| * | Zéro ou plus | /ab*/"a" → "a" |
| + | Un ou plusieurs | /ab+/"abbb" → "abbb" |
| ? | Zéro ou un – le rend facultatif | /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 <.+> avalerait les deux balises. | /<.+?>/"<a><b>" → "<a>" |
Ancres et limites
Ceux-ci correspondent à une position, pas à un personnage, ils ne consomment donc rien.
| Syntaxe | Signification | Exemple |
|---|---|---|
| ^ | Début de chaîne, ou d'une ligne avec le drapeau m | /^a/"abc" → "a" |
| $ | Fin de chaîne, ou d'une ligne avec le drapeau m | /c$/"abc" → "c" |
| \b | Une limite de motsC'est ce qui empêche la correspondance de "cat" à l'intérieur de "concaténer". | /\bcat\b/"the cat sat" → "cat" |
| \B | Pas une limite de mot | /\Bcat/"concatenate" → "cat" |
Groupes et alternance
| Syntaxe | Signification | Exemple |
|---|---|---|
| (abc) | Groupe de capture - mémorisé pour remplacement | /(\d+)-(\d+)/"10-20" → "10-20" |
| (?:abc) | Regrouper sans capturerUtilisez-le lorsque vous n'avez besoin que du regroupement ; cela permet de garder les chiffres de capture significatifs. | /(?:ab)+/"abab" → "abab" |
| (?<name>…) | Groupe de capture nommé | /(?<year>\d{4})/"in 2026" → "2026" |
| a|b | De chaque côté – alternanceL'alternance a la priorité la plus basse : ^a|b$ est "^a" ou "b$", et non "^(a|b)$". | /cat|dog/"one dog" → "dog" |
| \1 | Retour en référence au premier groupe | /(\w)\1/"letter" → "tt" |
Lookaround
Affirmations sur ce qui entoure un poste. Ils ne correspondent à rien eux-mêmes, ce qui les rend sûrs à combiner.
| Syntaxe | Signification | Exemple |
|---|---|---|
| (?=…) | Lookahead - suivi de ceci | /\d+(?= kg)/"80 kg" → "80" |
| (?!…) | Anticipation négative – non suivie 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" |
S'échapper
Ces douze caractères sont ceux qui nécessitent une barre oblique inverse pour être pris au pied de la lettre.
| 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 | Un onglet | /a\tb/"a\tb" → "a\tb" |
| \uFFFF | Un personnage par son point de code | /\u00e9/"café" → "é" |
Drapeaux
| Drapeau | Nom | Signification |
|---|---|---|
| g | Mondial | Trouvez chaque correspondance, pas seulement la première. |
| i | Ignorer le cas | Correspondance indépendamment des majuscules ou des minuscules. |
| m | Multiligne | Fait correspondre ^ et $ à chaque saut de ligne au lieu de seulement aux extrémités de la chaîne. |
| s | Pointez tout | Permettons. faire correspondre les sauts de ligne également. |
| u | Unicode | Traite le modèle comme des points de code et active les échappements de propriété \p{…}. |
| y | Collant | Correspond uniquement à lastIndex exactement, sans jamais chercher en avant. |