Introduction aux expressions régulières en JavaScript
Les expressions régulières sont des commandes pour la recherche et le remplacement complexes (ou simplement la recherche). Elles permettent de faire des choses très intéressantes, mais, malheureusement, sont assez difficiles à maîtriser.
Il existe plusieurs méthodes JavaScript pour
travailler avec les expressions régulières. Nous commencerons
à nous familiariser avec elles sur l'exemple de replace
- vous connaissez déjà cette méthode : elle prend comme premier
paramètre quoi remplacer, et comme deuxième
- par quoi remplacer. Et la méthode elle-même est appliquée
à la chaîne dans laquelle le remplacement est effectué :
'bab'.replace('a', '!'); // renverra 'b!b'
Le premier paramètre de cette méthode peut recevoir
non pas simplement une chaîne, mais une expression régulière.
Une expression régulière représente un ensemble
de commandes, placées entre des barres obliques /. Ces
barres obliques sont appelées délimiteurs des expressions
régulières.
Les expressions régulières elles-mêmes sont constituées de deux type de caractères : ceux qui représentent eux-mêmes et les caractères de commande, qui sont appelés caractères spéciaux.
Les lettres et les chiffres représentent eux-mêmes. Dans l'exemple
suivant, nous utiliserons une expression régulière
pour remplacer la lettre 'a' par ! :
'bab'.replace(/a/, '!'); // renverra 'b!b'
Alors que le point est un caractère spécial
et représente n'importe quel caractère. Dans l'exemple
suivant, nous trouverons une chaîne selon ce modèle :
la lettre 'x', puis n'importe quel caractère, puis
à nouveau la lettre 'x' :
'xax eee'.replace(/x.x/, '!'); // renverra '! eee'
Après les délimiteurs, on peut écrire des modificateurs
- des commandes qui modifient les propriétés générales
de l'expression régulière. Par exemple, le modificateur
g active le mode de recherche et remplacement
global - sans lui, l'expression régulière ne cherche que
la première correspondance, et avec lui - toutes les correspondances.
Dans l'exemple suivant, le modificateur g
n'est pas spécifié et l'expression régulière ne trouvera que la première
correspondance :
'aab'.replace(/a/, '!'); // renverra '!ab'
Et maintenant l'expression régulière trouvera toutes les correspondances :
'aab'.replace(/a/g, '!'); // renverra '!!b'
Une chaîne est donnée :
let str = 'ahb acb aeb aeeb adcb axeb';
Écrivez une expression régulière qui trouvera les chaînes
'ahb', 'acb', 'aeb'
selon le modèle : la lettre 'a', n'importe quel caractère,
la lettre 'b'.
Une chaîne est donnée :
let str = 'aba aca aea abba adca abea';
Écrivez une expression régulière qui trouvera les chaînes
'abba', 'adca', 'abea'
selon le modèle : la lettre 'a', 2
caractères quelconques, la lettre 'a'.
Une chaîne est donnée :
let str = 'aba aca aea abba adca abea';
Écrivez une expression régulière qui trouvera les chaînes
'abba' et 'abea', sans capturer
'adca'.