Expressions régulières en JavaScript avec exemples : en pratique
Les expressions régulières (RegExp) sont un outil puissant pour rechercher, remplacer et valider des chaînes de caractères. En JavaScript et Node.js, elles sont utilisées partout : de la validation de formulaires à l'analyse de logs. Dans cet article, nous allons aborder les bases de la syntaxe, les méthodes populaires et résoudre plusieurs problèmes pratiques.
1. Création d'une expression régulière
En JavaScript, il existe deux façons de créer une expression régulière :
- Notation littérale (recommandée) :
/pattern/flags - Constructeur
new RegExp('pattern', 'flags')
Exemple :
// Notation littéraleconst regexLiteral = /hello/i;
// Constructeur (utile lorsque le motif est dynamique)const pattern = 'hello';const regexConstructor = new RegExp(pattern, 'i');
console.log(regexLiteral.test('Hello World')); // trueconsole.log(regexConstructor.test('HELLO')); // true2. Méthodes principales de RegExp et String
Pour travailler avec les expressions régulières en JavaScript, on utilise deux types de méthodes : les méthodes de l'objet RegExp lui-même et les méthodes des chaînes de caractères.
2.1 Méthode test()
Vérifie s'il y a une correspondance dans la chaîne. Renvoie true ou false.
const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/;console.log(emailRegex.test('user@example.com')); // trueconsole.log(emailRegex.test('invalid-email')); // false2.2 Méthode exec()
Recherche une correspondance et renvoie un tableau avec des informations détaillées (ou null). Utile pour extraire des données.
const str = 'Prix : 1500 roubles, réduction : 200 roubles';const priceRegex = /(\\d+)/g;let match;
while ((match = priceRegex.exec(str)) !== null) { console.log(`Nombre trouvé : ${match[1]}`);}// Affichage :// Nombre trouvé : 1500// Nombre trouvé : 2002.3 Méthode de chaîne match()
Fonctionne de manière similaire à exec(), mais est appelée depuis la chaîne.
const text = 'JavaScript — c\'est génial ! JS est utilisé partout.';const result = text.match(/JS/g);console.log(result); // [ 'JS', 'JS' ]2.4 Méthode de chaîne replace()
Remplace les correspondances trouvées par la chaîne spécifiée ou le résultat d'une fonction.
const phone = '+7 (123) 456-78-90';const cleaned = phone.replace(/[\\s\\-\\(\\)\\+]/g, '');console.log(cleaned); // 71234567890
// Remplacement avec utilisation de groupes de captureconst date = '2024-03-15';const formatted = date.replace(/(\\d{4})-(\\d{2})-(\\d{2})/, '$3.$2.$1');console.log(formatted); // 15.03.20242.5 Méthode de chaîne search()
Renvoie l'index de la première correspondance ou -1.
const sentence = 'Apprenez JavaScript sur PythonLib';const index = sentence.search(/javascript/i);console.log(index); // 93. Drapeaux et caractères spéciaux : exemples pratiques
Les drapeaux modifient le comportement de la recherche. Les plus courants :
g— recherche globale (cherche toutes les correspondances, pas seulement la première).i— recherche insensible à la casse.m— mode multiligne (les ancres^et$fonctionnent sur chaque ligne).
Exemple avec le drapeau m :
const multiLineText = `Première lignedeuxième ligneTroisième ligne`;
// Sans le drapeau mconsole.log(multiLineText.match(/^deuxième/)); // null
// Avec le drapeau mconsole.log(multiLineText.match(/^deuxième/m)); // [ 'deuxième' ]