À propos : Testeur de regex
Une expression régulière (regex) est un petit langage de motifs qui permet de trouver ou de remplacer du texte selon une règle : validation de formulaires, analyse de journaux, rechercher-remplacer en masse… Ce testeur utilise le moteur d’expressions régulières JavaScript de votre navigateur : vous obtenez donc exactement le même résultat que dans du code JavaScript ou TypeScript.
La recherche s’exécute dans un fil séparé (Web Worker). Si un motif mal construit prend trop de temps, il est arrêté automatiquement au bout de 1,5 seconde et la page ne se bloque pas.
Mode d’emploi
- Choisissez un exemple dans Motifs courants ou saisissez votre propre expression. Les barres obliques (/) autour du motif sont inutiles.
- Activez ou désactivez les drapeaux nécessaires (g, i, m, s, u, y).
- Saisissez le texte à tester : les correspondances sont surlignées et la liste en dessous indique leur position et la valeur des groupes.
- Utilisez $1, $<nom> ou $& dans Remplacement pour prévisualiser le texte remplacé.
Aide-mémoire des regex
| Syntaxe | Signification | Exemple |
|---|---|---|
| \d \w \s | chiffre / lettre, chiffre ou _ / espace | \d{5} |
| . | n’importe quel caractère sauf retour à la ligne (inclus avec le drapeau s) | a.c |
| * + ? {n,m} | 0 fois ou plus / 1 fois ou plus / 0 ou 1 fois / de n à m fois | \d{3,4} |
| ^ $ | début / fin (de chaque ligne avec le drapeau m) | ^\d+$ |
| [à-ÿ] | classe de caractères – \w ne reconnaît pas les lettres accentuées ! | [A-Za-zÀ-ÿ]+ |
| ( ) (?: ) | groupe capturant / non capturant | (\d{2})/(\d{2}) |
| (?<nom> ) | groupe nommé | (?<year>\d{4}) |
| (?= ) (?! ) | assertion avant / assertion avant négative | \d+(?=\s?€) |
Les drapeaux
- g (global) : trouver toutes les correspondances, pas seulement la première.
- i (ignoreCase) : ignorer la différence majuscules/minuscules.
- m (multiline) : ^ et $ correspondent au début et à la fin de chaque ligne.
- s (dotAll) : le point (.) correspond aussi aux retours à la ligne.
- u (unicode) : traiter un emoji comme un seul caractère et autoriser \p{…}, par ex. \p{L} pour toutes les lettres, accents compris.
- y (sticky) : ne chercher qu’à la position courante (lastIndex).
Attention au retour arrière catastrophique (ReDoS)
Un motif avec des répétitions imbriquées comme ^(a+)+$ peut prendre un temps exponentiel sur un texte qui ne correspond pas et bloquer un serveur : c’est une attaque ReDoS. Si ce testeur dépasse le délai, supprimez l’imbrication, par exemple en remplaçant (a+)+ par a+.
Questions fréquentes
Le motif IBAN vérifie-t-il qu’un IBAN est valide ?
Non. Une expression régulière ne vérifie que le format ; elle ne peut pas calculer la clé de contrôle (modulo 97). Ce que vous saisissez n’est envoyé à aucun serveur.
Les résultats sont-ils identiques en Python, Java ou PCRE ?
La syntaxe de base est en grande partie la même, mais certains détails diffèrent. Python écrit les groupes nommés (?P
Pourquoi \w ne trouve-t-il pas « é » ou « ç » ?
En JavaScript, \w ne couvre que A–Z, a–z, 0–9 et _. Pour les mots français, utilisez [A-Za-zÀ-ÿ] ou, avec le drapeau u, la classe \p{L}.
Que se passe-t-il s’il y a énormément de correspondances ?
Jusqu’à 5 000 correspondances sont recherchées et surlignées ; le tableau affiche les 300 premières.