Une syntaxe : celle de JavaScript
Une expression régulière décrit un motif de texte : « deux chiffres, une barre oblique, deux chiffres ». Le testeur utilise le moteur de votre navigateur, donc la syntaxe de JavaScript, définie par la norme ECMAScript. Une expression qui fonctionne ici fonctionnera dans un script JavaScript, avec les mêmes drapeaux.
Les autres langages ont des variantes : PHP (PCRE), Python, Java ou les outils en ligne de commande acceptent des écritures que JavaScript refuse, et inversement. Testez toujours dans le langage où l'expression servira.
Aide-mémoire
| Écriture | Ce qu'elle trouve |
|---|---|
. | Un caractère quelconque, sauf un saut de ligne (sauf avec s) |
\d \w \s | Un chiffre, un caractère de mot (lettre non accentuée, chiffre, _), un espace |
\D \W \S | Le contraire des trois précédents |
[abc] [^abc] | Un caractère de la liste, ou hors de la liste |
[a-z0-9] | Un caractère dans ces intervalles |
^ $ | Début et fin du texte (de chaque ligne avec m) |
\b | Une limite de mot |
* + ? | 0 fois ou plus, 1 fois ou plus, 0 ou 1 fois |
{3} {2,5} | Exactement 3 fois, de 2 à 5 fois |
*? +? | Les mêmes, en prenant le moins possible |
a|b | a ou b |
( ) | Un groupe de capture, numéroté |
(?<nom> ) | Un groupe de capture nommé |
(?: ) | Un groupe qui ne capture pas |
(?= ) (?! ) | Suivi, ou non suivi, de… |
(?<= ) (?<! ) | Précédé, ou non précédé, de… |
\. \( \\ | Le caractère lui-même, échappé |
Les six drapeaux
- g (global) : toutes les correspondances, et pas seulement la première.
- i : ignore la différence entre majuscules et minuscules.
- m (multiligne) :
^et$s'appliquent au début et à la fin de chaque ligne. - s : le point trouve aussi les sauts de ligne.
- u (Unicode) : l'expression lit des points de code plutôt que des unités de 16 bits, ce qui compte pour les émojis, et permet les classes de propriétés comme
\p{L}(toute lettre, accentuée ou non). - y (collant) : chaque correspondance doit commencer exactement là où la précédente s'est arrêtée.
Trois exemples
(\d{2})/(\d{2})/(\d{4}) avec g sur « le 14/07/2026, rappel le 01/08/2026 » trouve 2 correspondances de 3 groupes. Remplacé par $3-$2-$1, le texte devient « le 2026-07-14, rappel le 2026-08-01 ».
(?<cp>\d{5}) (?<ville>[A-Z][a-z]+) sur « 75001 Paris » donne cp = 75001 et ville = Paris. Le remplacement $<ville> ($<cp>) écrit Paris (75001).
\w+ avec g sur « café crème » trouve 3 morceaux : caf, cr et me, car \w ne connaît que les lettres non accentuées. \p{L}+ avec gu trouve les 2 mots entiers.
Les expressions qui bloquent
(a+)+$ sur « aaaa…ab » : des essais sans finQuand deux quantificateurs sont imbriqués, le moteur essaie toutes les façons de répartir les caractères entre eux avant de conclure à l'échec, et ce nombre peut doubler à chaque caractère ajouté. Le testeur exécute l'expression à part, dans un Web Worker, et l'arrête au bout d'une seconde ; dans un vrai programme, elle bloquerait. Réécrivez-la sans imbrication : a+$ trouve la même chose.
Questions fréquentes
Quelle syntaxe d'expressions régulières utilise ce testeur ?
Celle de JavaScript, définie par la norme ECMAScript, telle que l'exécute votre navigateur. Elle est proche de celle de PCRE (PHP) ou de Python, mais pas identique : les groupes nommés s'écrivent (?<nom>…), et il n'existe ni quantificateur possessif ni groupe atomique.
Pourquoi mon expression ne trouve-t-elle qu'une seule correspondance ?
Sans le drapeau g (global), la recherche s'arrête à la première correspondance, et un remplacement ne s'applique qu'à elle. Activez g pour toutes les trouver.
Comment réutiliser un groupe dans le remplacement ?
Écrivez $1, $2… pour les groupes numérotés, $<nom> pour un groupe nommé, $& pour la correspondance entière et $$ pour un signe dollar. Par exemple, (\d{2})/(\d{2})/(\d{4}) remplacé par $3-$2-$1 transforme 14/07/2026 en 2026-07-14.
Pourquoi le testeur arrête-t-il mon expression ?
Elle a dépassé une seconde de calcul. C'est le signe d'un retour arrière catastrophique : des quantificateurs imbriqués comme (a+)+ font explorer au moteur un nombre de chemins qui peut doubler à chaque caractère. Le calcul tourne à part, dans un Web Worker, et la page reste utilisable.
Mon texte est-il envoyé quelque part ?
Non. L'expression et le texte restent dans votre navigateur et ne sont pas gardés dans l'adresse de la page ; seuls les drapeaux y figurent.
Une erreur ? Signalez-la, nous la corrigeons.