RevealTheme logo

Testeur d'expressions régulières

Testez des expressions régulières JavaScript sur n'importe quelle entrée. Visualisez les correspondances, les groupes et les remplacements en temps réel.

0 correspondance(s)

Que sont les expressions régulières et comment se lisent-elles ?

Les expressions régulières (regex) sont un petit langage dédié à la recherche de motifs dans du texte. Tout langage de programmation moderne possède un moteur de regex ; cet outil utilise l'objet RegExp natif de JavaScript, qui suit la spécification ECMAScript 2018+ et prend en charge des fonctionnalités modernes telles que les assertions lookbehind, les groupes de capture nommés, les échappements de propriétés Unicode et l'indicateur dotAll. Les briques de base : les caractères littéraux se correspondent à eux-mêmes (la regex 'chat' correspond au mot chat) ; les classes de caractères correspondent à n'importe quel élément d'un ensemble ('[a-z]' correspond aux lettres minuscules) ; les quantificateurs contrôlent la répétition (* zéro ou plus, + un ou plus, ? zéro ou un, {3,5} entre 3 et 5) ; les ancres correspondent à des positions (^ début de chaîne, $ fin, \b limite de mot) ; les groupes capturent des sous-correspondances ((chat|chien) correspond à l'un ou l'autre, en capturant lequel) ; l'alternance offre un choix. La regex excelle pour analyser du texte structuré mais non grammatical (journaux, e-mails, numéros de téléphone, attributs HTML simples) et échoue face à des structures véritablement récursives (HTML complet, JSON imbriqué). Pour celles-ci, utilisez un analyseur syntaxique. Ce testeur vous permet d'itérer sur un motif avec un retour instantané : modifiez la regex et les correspondances sont recalculées à chaque frappe.

Cas d'usage courants

  • Validez le format des saisies utilisateur (e-mails, numéros de téléphone, codes postaux) avant de les envoyer à votre serveur.

  • Extrayez des données structurées de fichiers journaux (horodatages, IP, codes de statut, chemins de requête).

  • Recherchez et remplacez dans des centaines de fichiers à l'aide de la recherche regex de votre éditeur.

  • Rédigez des règles de réécriture d'URL pour Nginx, le .htaccess d'Apache ou les réécritures de Vercel.

  • Analysez des formats simples de type CSV pour lesquels un véritable analyseur serait excessif.

  • Créez des motifs de validation de formulaire pour l'attribut pattern de <input> en HTML.

Questions fréquentes

Quels indicateurs sont pris en charge ?
g (global : trouve toutes les correspondances, pas seulement la première), i (insensible à la casse), m (multiligne : ^ et $ correspondent aux sauts de ligne), s (dotAll : . correspond aux sauts de ligne), u (unicode : gestion correcte des caractères multioctets), y (sticky : correspond uniquement à lastIndex). Combinez les indicateurs en les concaténant : 'gim' active global + insensible à la casse + multiligne.
Comment faire une correspondance sur plusieurs lignes ?
Deux besoins distincts : 'm' fait que ^ et $ correspondent aux sauts de ligne (traite chaque ligne comme une chaîne séparée pour les ancres). 's' fait que . correspond aux sauts de ligne (sinon . correspond à tout sauf aux sauts de ligne). Utilisez les deux ensemble si vous devez faire correspondre des motifs s'étendant sur plusieurs lignes.
Quelle est la différence entre les quantificateurs gourmands et paresseux ?
Les quantificateurs gourmands (*, +, {n,m}) correspondent au maximum possible. Les paresseux (*?, +?, {n,m}?) correspondent au minimum possible. L'exemple classique : la regex '<.*>' sur '<a><b>' correspond à tout '<a><b>' ; '<.*?>' correspond uniquement à '<a>'.
Quand NE dois-je PAS utiliser de regex ?
Lorsque la structure est véritablement récursive (HTML, JSON, parenthèses équilibrées). Lorsque vous devez gérer correctement chaque cas limite (analyser des dates avec fuseaux horaires, des noms avec apostrophes). Lorsque la grammaire de l'entrée est bien définie et qu'une bibliothèque d'analyse existe. Célèbre réponse sur Stack Overflow : la regex est excellente pour trouver des motifs, terrible pour analyser des langages.
Que sont les groupes de capture nommés ?
Au lieu que (\d{4})-(\d{2})-(\d{2}) renvoie des groupes numérotés, utilisez (?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2}) et accédez aux correspondances via match.groups.year. Bien plus maintenable dans du code réel.
Pourquoi ma regex est-elle lente avec certaines entrées ?
Retour sur trace catastrophique. Les quantificateurs imbriqués comme (a+)+ peuvent prendre un temps exponentiel avec des entrées adverses. Évitez les quantificateurs imbriqués et les alternances qui se chevauchent. Le moteur JavaScript n'a pas de délai d'expiration, de sorte qu'une mauvaise regex peut bloquer une requête. En production, utilisez le paquet npm safe-regex pour détecter les motifs risqués.
Cela correspond-il à ce que fait le moteur de regex de mon serveur ?
En grande partie : les principales variantes de regex (PCRE, le module re de Python, les regex de Ruby, Java) sont similaires mais présentent de subtiles différences. La syntaxe du lookbehind, le comportement des classes de caractères et la gestion d'Unicode varient. Pour une parité en production, testez également dans le langage cible.

Outils connexes