Tous les articles

Expressions régulières : syntaxe de base et motifs courants

Une expression régulière (regex) est une façon compacte de décrire un motif de texte : pas une chaîne précise, mais une règle qu'une chaîne doit respecter. Plutôt que de parcourir des caractères dans une boucle, on peut vérifier ou trouver une structure complexe avec une seule expression.

Les briques de base

  • Classes de caractères\d (chiffre), \w (lettre/chiffre/underscore), \s (espace), ou une classe personnalisée comme [a-zA-Z].
  • Quantificateurs* (0 ou plus), + (1 ou plus), ? (0 ou 1), {2,5} (2 à 5 fois).
  • Groupes de capture — les parenthèses (...) isolent une partie de la correspondance, réutilisable ensuite séparément, par exemple lors d'un remplacement.
  • Ancres^ et $ attachent un motif au début ou à la fin d'une ligne.

Pourquoi \w échoue sur « café »

Dans le moteur d'expressions régulières de JavaScript utilisé par cet outil, \w désigne toujours exactement [A-Za-z0-9_] — des lettres non accentuées, des chiffres et l'underscore. C'est pourquoi /^\w+$/.test('café') renvoie false : l'accent aigu casse la correspondance. Ajouter le flag u ne change rien, car contrairement à Python, \w en JavaScript ne devient jamais sensible à Unicode, quel que soit le flag. La bonne syntaxe est /^\p{L}+$/u, la classe de propriété Unicode qui reconnaît n'importe quelle lettre de n'importe quel alphabet, accents compris.

Correspondance gourmande contre paresseuse

Par défaut, les quantificateurs sont « gourmands » : ils essaient de capturer le plus de caractères possible, et ne reculent que si cela empêche une correspondance. Par exemple, <.+> sur <a>texte</a> capturerait tout, du premier < au tout dernier >. Ajouter ? après un quantificateur (<.+?>) le rend « paresseux » : il capture le moins possible, s'arrêtant à la première correspondance valide.

À quoi ça sert

  • Valider le format de données saisies (email, numéro de téléphone, code postal).
  • Rechercher et remplacer du texte en masse selon un motif plutôt qu'une correspondance exacte.
  • Extraire des données structurées de logs ou de texte non structuré.

Backtracking catastrophique

Des quantificateurs imbriqués comme (a+)+ peuvent, sur certaines chaînes en entrée, forcer le moteur de regex à explorer un nombre exponentiel de combinaisons avant de conclure qu'il n'y a pas de correspondance — la page ou le serveur « se fige » sur une expression en apparence simple. C'est une vraie classe de vulnérabilité (ReDoS), donc les quantificateurs imbriqués complexes doivent être testés sur de longues chaînes « presque correspondantes », pas seulement sur les exemples attendus.

Essayer l'outil