Les expressions régulières, communément appelées "regex" ou "regexp", sont des chaînes qui décrivent un modèle de recherche. Vous pouvez utiliser des expressions régulières pour vérifier si une chaîne contient un modèle spécifique, extraire des informations d'une chaîne et remplacer des parties d'une chaîne par un nouveau texte.
Apprenez la syntaxe de base des expressions régulières et comment les utiliser en JavaScript.
La syntaxe de base des expressions régulières
Il existe deux façons de créer une expression régulière en JavaScript: en utilisant un littéral d'expression régulière et en utilisant le RegExp constructeur.
Un littéral d'expression régulière consiste en un modèle entouré de barres obliques, suivi d'un indicateur facultatif.
Par exemple:
// Sans drapeau
constante regexExpression_1 = /pattern/
// Avec drapeau
constante regexExpression_2 = /pattern/drapeau
Un indicateur est un paramètre facultatif que vous pouvez ajouter à une expression régulière pour modifier son comportement. Par exemple:
constante regexFlag = /the/g;
Le g flag indique que l'expression doit correspondre à toutes les occurrences, pas seulement à la première.
Vous pouvez également créer une expression régulière à l'aide de la RegExp constructeur. Par exemple:
constante expressionregex = nouveauRegExp("Modèle", "g");
Le RegExp Le constructeur prend deux paramètres: un motif (une chaîne ou un littéral d'expression régulière) et un ou plusieurs indicateurs.
Il existe deux drapeaux assez courants que vous utiliserez avec une expression régulière en JavaScript :
- g: L'indicateur global fait correspondre l'expression régulière à toutes les occurrences du modèle dans la chaîne donnée au lieu d'une seule occurrence.
- je: L'indicateur insensible à la casse oblige l'expression régulière à ne pas tenir compte de la casse du modèle et à faire correspondre les caractères majuscules et minuscules dans la chaîne donnée.
Vous pouvez utiliser des indicateurs ensemble dans une seule expression dans n'importe quel ordre. Par exemple:
constante expressionregex = nouveauRegExp("Modèle", "gi");
Cette expression correspondra à toutes les occurrences de "Pattern", quelle que soit la casse.
Dans les expressions régulières, certains caractères, appelés métacaractères, ont des significations particulières. Vous pouvez les utiliser pour faire correspondre des types spécifiques de caractères ou de motifs.
Voici quelques-uns des métacaractères les plus couramment utilisés et leur signification :
- Le caractère générique (.): ce caractère correspond à n'importe quel caractère unique, à l'exception d'une nouvelle ligne. C'est un outil utile pour faire correspondre des modèles avec des caractères inconnus.
- L'étoile Kleene (*): ce caractère correspond à zéro ou plusieurs occurrences du caractère ou du groupe précédent. Il permet au caractère ou au groupe précédent d'apparaître un nombre quelconque de fois dans la chaîne, y compris zéro.
- Le caractère facultatif (?): ce caractère correspond à zéro ou à une occurrence d'un caractère ou d'un groupe précédent.
- Ancre de début de ligne (^): ce caractère ne correspond qu'au début d'une ligne ou d'une chaîne.
- Ancre de fin de ligne ($): ce caractère correspond à la fin d'une ligne ou d'une chaîne.
- Jeu de caractères/Classe ([]): un jeu de caractères correspond à n'importe quel caractère d'un jeu de caractères dans une chaîne. Vous les définissez à l'aide de crochets [] et vous pouvez spécifier un jeu de caractères fixes, des caractères spéciaux ou certains groupes de caractères.
- Caractère d'alternance (|): ce caractère correspond au caractère ou au groupe précédent ou suivant. Il fonctionne de manière similaire à la salle d'opération Opérateur JavaScript.
- Caractère de regroupement (()): le caractère de regroupement vous permet de regrouper des caractères ou des sous-expressions, de leur appliquer des opérateurs en tant qu'unité et de contrôler l'ordre des opérations.
Tester une chaîne par rapport à une expression régulière en JavaScript
En JavaScript, vous pouvez tester une chaîne par rapport à une expression régulière à l'aide de plusieurs méthodes.
Cette section suppose que vous avez une compréhension de base des expressions régulières et des modèles. Si vous n'êtes pas à l'aise avec les expressions régulières, consultez un guide du débutant sur les expressions régulières d'abord.
La méthode d'essai
Le .test() renvoie un booléen indiquant si l'expression régulière correspond ou non à la chaîne. Cette méthode prend une chaîne pour effectuer la recherche en tant qu'argument. Il est particulièrement utile pour les contrôles simples.
Par exemple:
laisser expression régulière = /.com$/;
laisser chaîne = "exemple.com";
console.log (regex.test (str)); // vrai
Cette expression régulière correspond à une chaîne qui se termine par ".com".
La méthode exec
Le .exec() La méthode renvoie un tableau contenant le texte correspondant et tous les groupes ou nul s'il ne trouve pas de correspondance. Cette méthode prend une chaîne pour effectuer la recherche en tant qu'argument. Il est utile pour les expressions régulières plus complexes.
Par exemple:
laisser expression régulière = /^\\(?([0-9]{3})\\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/;
laisser chaîne = "123-456-7890";
laisser résultat = regex.exec (str);
si (résultat !== nul) {
console.enregistrer(`${résultat[0]} est un numéro de téléphone valide`);
} autre {
console.enregistrer("Numéro de téléphone invalide");
}
L'expression régulière ci-dessus correspond à une chaîne qui commence par un " facultatif(", trois chiffres et un " facultatif)". Il recherche ensuite un "-", ".", ou espace, suivi de trois chiffres. Il cherche enfin une option "-", ".", ou un espace suivi de quatre chiffres à la fin de la chaîne.
Cette expression régulière correspond aux numéros de téléphone au format « (xxx) xxx-xxxx », « xxx-xxx-xxxx », « xxx.xxx.xxxx » ou « xxx xxx xxxx ».
S'il trouve une correspondance, .exec() renvoie un tableau contenant le texte correspondant et tous les groupes capturés (définis par des parenthèses). Il inclura chaque groupe en tant qu'élément supplémentaire dans le tableau qu'il renvoie. Cela vous permet d'accéder à des parties spécifiques du texte correspondant, ce qui peut vous aider à extraire des informations d'une chaîne.
La méthode de remplacement
Le .remplacer() La méthode recherche une correspondance entre une expression régulière et une chaîne et remplace le texte correspondant par un texte de remplacement spécifié. Il s'agit d'une méthode d'objets chaîne, et elle prend une expression régulière et une chaîne de remplacement comme arguments.
Par exemple:
laisser chaîne = "Le renard brun rapide saute par-dessus le chien paresseux.";
laisser expressions = /The/gi;
laisser newString = string.replace (expression, "un");
console.log (nouvelleChaîne); // "un renard brun rapide saute par-dessus un chien paresseux."
Cet exemple appelle le remplacer() méthode sur la chaîne variable, en passant l'expression régulière, expression. L'expression régulière correspondra à toutes les occurrences de "The" dans la chaîne, quelle que soit la casse. L'appel à la méthode replace lui demande de remplacer chaque occurrence par la chaîne "a".
Considérations relatives aux performances lors de l'utilisation d'expressions régulières
Bien que les expressions régulières aident à faire correspondre et à manipuler les chaînes, elles peuvent également être coûteuses en termes de performances. Il est essentiel de rendre les modèles aussi spécifiques que possible et de les garder simples pour qu'ils restent performants.