Les expressions régulières (ou « regex ») vous permettent de vérifier si une chaîne de caractères correspond à un modèle spécifique. Elles sont utiles pour effectuer des opérations de validation et de filtrage sur les données d’entrée, pour vérifier si une chaîne de caractères respecte un certain format, comme une adresse email ou un numéro de téléphone.
Les deux syntaxes :
Il existe deux manières principales de gérer des expressions régulières en JavaScript :
- En utilisant la syntaxe
RegExp
:
let regexp = new RegExp(pattern[, flags]);
pattern
est le motif, c’est-à-dire la chaîne de caractères que vous voulez rechercher et flags
sont des options qui modifient le comportement de la recherche. Par exemple, "g"
est une option qui indique que la recherche doit être effectuée sur toute la chaîne de caractères, et non seulement sur la première occurrence du motif.
- En utilisant la syntaxe dite « literal regular expression » :
const regex = /pattern/flags;
Cette syntaxe est plus concise et plus facile à lire. Elle est recommandée lorsque le motif et les options sont connus à l’avance et ne changent pas.
Les flags :
Voici une liste de quelques flags couramment utilisés dans les expressions régulières en JavaScript :
g
(global) : indique que la recherche doit être effectuée sur toute la chaîne de caractères, et non seulement sur la première occurrence du motif.i
(ignore case) : indique que la recherche doit être insensible à la casse.m
(multiline) : indique que la recherche doit être effectuée sur chaque ligne de la chaîne de caractères, et non seulement sur l’ensemble de la chaîne.u
(unicode) : active le traitement de certaines séquences Unicode spéciales, telles que\u{NNNN}
ou\uNNNN
.y
(sticky) : active le mode « collant » de la recherche, qui ne recommence pas au début de la chaîne lorsqu’un échec est détecté.
Les caractères spéciaux :
^
: indique le début de la chaîne de caractères.$
: indique la fin de la chaîne de caractères.+
: indique que l’élément précédent doit être présent une ou plusieurs fois.
String.prototype.match() :
La méthode String.prototype.match()
est une méthode de l’objet String
qui permet de trouver toutes les occurrences d’un motif dans une chaîne de caractères. Elle prend en paramètre une expression régulière et retourne un tableau contenant les occurrences trouvées, ou null
si aucune occurrence n’a été trouvée. Voici quelques exemples d’utilisation de la méthode match()
en JavaScript :
- Pour trouver tous les mots de plus de 10 caractères dans une chaîne de caractères :
const words = str.match(/\b\w{10,}\b/g);
- Pour trouver tous les nombres dans une chaîne de caractères :
const numbers = str.match(/\d+/g);
- Pour vérifier si une chaîne de caractères contient un code postal français :
const isZipCode = /^\d{5}$/.test(str);
String.prototype.replace() :
La méthode String.prototype.replace()
est une méthode de l’objet String
qui permet de remplacer certaines parties d’une chaîne de caractères par une autre chaîne de caractères. Elle prend en paramètre une expression régulière et la chaîne de caractères de remplacement, et retourne une nouvelle chaîne de caractères avec les modifications effectuées.
- Pour remplacer tous les espaces en début et fin de chaîne par des tirets :
const newStr = str.replace(/^\s+|\s+$/g, "-");
- Pour remplacer tous les nombres par des astérisques :
const newStr = str.replace(/\d+/g, "*");
RegExp.prototype.exec() :
La méthode RegExp.prototype.exec()
est une méthode de l’objet RegExp
qui permet de trouver la première occurrence d’un motif dans une chaîne de caractères. Elle prend en paramètre une chaîne de caractères et retourne un tableau contenant l’occurrence trouvée, ou null
si aucune occurrence n’a été trouvée.
- Pour trouver la première occurrence d’un mot de plus de 10 caractères dans une chaîne de caractères :
const word = /\b\w{10,}\b/.exec(str);
- Pour trouver la première occurrence d’un nombre dans une chaîne de caractères :
const number = /\d+/.exec(str);
- Pour vérifier si une chaîne de caractères contient un code postal français :
const isZipCode = /^\d{5}$/.exec(str);
RegExp.prototype.test() :
La méthode RegExp.prototype.test()
est une méthode de l’objet RegExp
qui permet de vérifier si une chaîne de caractères contient un motif spécifique. Elle prend en paramètre une chaîne de caractères et retourne true
si le motif est trouvé, ou false
sinon.
- Pour vérifier si une chaîne de caractères contient un mot de plus de 10 caractères :
const hasLongWord = /\b\w{10,}\b/.test(str);
- Pour vérifier si une chaîne de caractères contient un nombre :
const hasNumber = /\d+/.test(str);
- Pour vérifier si une chaîne de caractères respecte un format de code postal français :
const isZipCode = /^\d{5}$/.test(str);