Informatique
Testeur d'expressions régulières
Saisis le motif, les drapeaux et le texte : vois aussitôt les correspondances surlignées, les groupes de capture de chacune et, si tu veux, le texte après remplacement. Le moteur est celui de JavaScript de ton navigateur.
Les expressions régulières en pratique
Une expression régulière décrit un ensemble de chaînes : \d{4}-\d{2}-\d{2} reconnaît les dates écrites 2025-03-14, \d{5} un code postal français. Les parenthèses créent des groupes de capture, que le remplacement peut réutiliser avec $1, $2 ou par leur nom si le groupe en a un.
Les drapeaux changent le comportement : g cherche toutes les correspondances au lieu de la première, i ignore la casse, m fait valoir ^ et $ à chaque ligne, s permet au point de correspondre aux sauts de ligne, u active les classes Unicode comme \p{L}. Sans g, le remplacement ne change que la première occurrence.
Certains motifs, comme (a+)+$ ou (\w+\s?)*$, essaient un nombre exponentiel de combinaisons sur un texte qui correspond presque, et peuvent bloquer un navigateur ou un serveur : c'est le ReDoS. Ici, le test tourne dans un processus séparé et s'arrête au bout d'une seconde : la page reste utilisable et te signale le problème.
Erreurs fréquentes
- Oublier de doubler les barres obliques inverses quand la regex est dans une chaîne de code : ici on écrit \d, dans une chaîne JavaScript "\\d".
- Utiliser .* là où il faut .*? : le quantificateur gourmand prend tout jusqu'à la dernière occurrence possible.
- Imbriquer des quantificateurs comme (a+)+ ou (a|a)* : c'est la cause la plus fréquente de retour arrière catastrophique.
Questions fréquentes
Quel moteur d'expressions régulières est utilisé ?
Celui de JavaScript (ECMAScript) de ton navigateur. Il est très proche de PCRE, utilisé par PHP, mais certaines fonctions, comme les groupes atomiques et les quantificateurs possessifs, manquent.
Comment utiliser un groupe dans le remplacement ?
Avec $1, $2… pour les groupes numérotés, $ suivi du nom entre chevrons pour les groupes nommés et $& pour la correspondance entière. Un dollar littéral s'écrit $$.
Le texte saisi est-il envoyé quelque part ?
Non : tout se passe dans le navigateur. Motif et texte ne vont que dans l'adresse de la page, pour pouvoir la partager, et seulement s'ils sont courts.
Comment fonctionne ce calcul
Le motif est compilé avec new RegExp(motif, drapeaux) et appliqué avec String.prototype.matchAll, toujours avec le drapeau g ajouté pour parcourir le texte ; sans g dans la demande, seule la première correspondance est gardée. Le remplacement utilise String.prototype.replace avec les drapeaux choisis. L'exécution a lieu dans un Web Worker, arrêté s'il ne répond pas en 1 seconde ; au plus 1000 correspondances sont listées.
Calculs liés
Formateur et validateur JSON
Formate, minifie et valide du JSON : indentation, clés triées et position exacte des erreurs.
Encodage d'URL
Encodage et décodage en pourcentage de valeurs et d'adresses, et une URL découpée en ses parties.
Convertisseur Base64
Du texte, d'un entier, de l'hexadécimal ou du binaire vers Base64 et retour, groupes de 6 bits expliqués.
Expressions cron expliquées
Traduis une expression cron en mots et vois les prochaines exécutions, champ par champ.