Expressions régulières en JavaScript avec exemples : en pratique

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Expressions régulières en JavaScript avec exemples : en pratique

\n\n

Les expressions régulières (RegExp) sont un outil puissant pour rechercher, remplacer et valider du texte. En JavaScript, particulièrement dans l'environnement Node.js, elles sont utilisées partout : de l'analyse des logs à la validation de formulaires. Dans cet article, nous allons décortiquer la syntaxe, les méthodes et écrire des exemples pratiques que vous pourrez immédiatement utiliser dans vos projets.

\n\n

1. Bases de la syntaxe et création d'une RegExp

\n\n

En JavaScript, une expression régulière peut être créée de deux manières : par un littéral et par un constructeur. Le littéral est pratique pour les motifs statiques, le constructeur pour les motifs dynamiques.

\n\n
// Littéral (recommandé)\nconst regexLiteral = /hello/gi;\n\n// Constructeur (pour les motifs dynamiques)\nconst pattern = "hello";\nconst flags = "gi";\nconst regexConstructor = new RegExp(pattern, flags);
\n\n

Drapeaux (modificateurs) :

\n
    \n
  • g — recherche globale (trouve toutes les correspondances, pas seulement la première)
  • \n
  • i — recherche insensible à la casse
  • \n
  • m — mode multiligne (les ancres ^ et $ fonctionnent pour chaque ligne)
  • \n
  • s — permet au point . de correspondre au caractère de nouvelle ligne
  • \n
  • u — active le support complet d'Unicode
  • \n
\n\n

Métacaractères de base :

\n
    \n
  • . — n'importe quel caractère sauf la nouvelle ligne
  • \n
  • \\d — un chiffre (0-9)
  • \n
  • \\w — une lettre, un chiffre ou un tiret bas
  • \n
  • \\s — un caractère d'espacement (espace, tabulation, saut de ligne)
  • \n
  • ^ — début de la chaîne
  • \n
  • $ — fin de la chaîne
  • \n
  • [] — classe de caractères (par exemple [a-z] — toutes les lettres minuscules)
  • \n
  • () — groupe de capture
  • \n
  • | — OU logique
  • \n
\n\n

2. Méthodes principales pour travailler avec les expressions régulières

\n\n

En JavaScript, il existe plusieurs méthodes qui fonctionnent avec RegExp. Examinons-les avec des exemples pratiques.

\n\n

2.1. test() — vérification de correspondance

\n

La méthode retourne true ou false. Idéale pour la validation.

\n\n
const emailPattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/;\nconst emails = ["user@example.com", "invalid-email", "test@domain.co.uk"];\n\nemails.forEach(email => {\n  console.log(`${email}: ${emailPattern.test(email)}`);\n});\n// user@example.com: true\n// invalid-email: false\n// test@domain.co.uk: true
\n\n

2.2. exec() — recherche avec détails

\n

Retourne un tableau avec la correspondance et les groupes de capture. Pratique pour extraire des données.

\n\n
const logLine = "ERROR: 2023-10-15 14:30:00 - Server crash";\nconst logPattern = /^(ERROR|WARN|INFO): (\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}) - (.+)$/;\nconst result = logPattern.exec(logLine);\n\nif (result) {\n  console.log(`Niveau : ${result[1]}`);\n  console.log(`Date : ${result[2]}`);\n  console.log(`Message : ${result[3]}`);\n}\n// Niveau : ERROR\n// Date : 2023-10-15 14:30:00\n// Message : Server crash
\n\n

2.3. match() — recherche dans une chaîne

\n

Méthode de chaîne qui retourne un tableau de correspondances. Avec le drapeau g — toutes les correspondances, sans — la première avec les groupes.

\n\n
const text = "Tél : +7(999)123-45-67, +7(495)765-43-21";\nconst phonePattern = /\\+7\\(\\d{3}\\)\\d{3}-\\d{2}-\\d{2}/g;\nconst phones = text.match(phonePattern);\n\nconsole.log(phones);\n// ['+7(999)123-45-67', '+7(495)765-43-21']
\n\n

2.4. replace() — remplacement de texte

\n

Permet de remplacer les correspondances par une nouvelle chaîne. Prend en charge les caractères spéciaux, comme $1 pour les groupes de capture.

\n\n
const messyDate = "2023/10/15";\nconst cleanDate = messyDate.replace(/(\\d{4})\\/(\\d{2})\\/(\\d{2})/, "$3.$2.$1");\nconsole.log(cleanDate); // 15.10.2023\n\n                

Blogs

Book Recommendations