RegExp
Une expression régulière : un modèle pour rechercher, valider et remplacer des fragments de texte.
- Renvoie
- Un nouvel objet
RegExp.
Exemple
#const postalCode = /^\d{2}-\d{3}$/
console.log(postalCode.test('00-950'))
console.log(postalCode.test('00950'))
console.log(postalCode)^ et $ marquent le début et la fin du texte, \d correspond à n’importe quel chiffre, et {2} signifie exactement deux répétitions.
Définition et utilisation
#Une expression régulière décrit un modèle de texte, par exemple « uniquement des chiffres », « un code postal » ou « un mot commençant par une majuscule ». Vous en créez une sous forme de littéral entre barres obliques, /pattern/flags, ou avec le constructeur new RegExp("pattern", "flags") quand le modèle est construit dynamiquement, par ex. à partir d’un texte saisi par l’utilisateur.
La méthode test() vérifie si un texte correspond au modèle et renvoie true ou false. Les expressions fonctionnent aussi avec les méthodes des chaînes : match() et matchAll() cherchent des correspondances, replace() et replaceAll() remplacent des fragments, et split() découpe le texte.
Les drapeaux modifient le comportement du modèle : g cherche toutes les correspondances, i ignore la casse, m fait fonctionner ^ et $ pour chaque ligne, et u active la prise en charge complète d’Unicode. Les parenthèses ( ) créent des groupes, qui permettent de lire des fragments de la correspondance, et l’écriture (?<name>...) donne un nom à un groupe.
Syntaxe
#/pattern/flags
new RegExp(pattern)
new RegExp(pattern, flags)
regex.test(text)
text.match(regex)
text.replace(regex, replacement)Paramètres
#pattern
chaîne ou RegExp
Le modèle. Dans le constructeur, c’est une chaîne ordinaire, donc les antislashs doivent être doublés :"\\d+".flags
chaîne optionnelle
Les drapeaux, par ex."g","i"ou"gi".
Plus d’exemples
#const text = 'Exercice 3 pour 15 pts, exercice 7 pour 40 pts'
console.log(text.match(/\d+/g))
console.log(text.match(/exercice/gi).length)
console.log(text.match(/exercice/g).length)const date = '2026-09-28'
const { groups } = date.match(/(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/)
console.log(groups.day, groups.month, groups.year)
console.log(date.replace(/(\d{4})-(\d{2})-(\d{2})/, '$3.$2.$1'))const hasDigit = /\d/g
console.log(hasDigit.test('a1'))
console.log(hasDigit.test('a1'))
console.log(hasDigit.test('a1'))Avec le drapeau g, l’expression retient dans lastIndex l’endroit où elle s’est arrêtée, et l’appel suivant reprend à partir de là. Pour une simple vérification, omettez le drapeau g.
Compatibilité des navigateurs
#Largement disponible
Fonctionne dans tous les navigateurs modernes, y compris sur mobile. Vous pouvez l’utiliser sans crainte.
- Chrome
- Edge
- Firefox
- Safari
Bonnes pratiques
#- Dans un littéral
/.../, vous écrivez\d, mais dans une chaîne pournew RegExp(), vous devez doubler l’antislash :"\\d". - N’utilisez pas le drapeau
gavectest()quand vous l’appelez plusieurs fois sur la même expression. L’appel suivant peut renvoyerfalse. - Protégez le texte venant de l’utilisateur et inséré dans un modèle contre les caractères spéciaux (par ex.
.,*,?). Les navigateurs récents ont pour cela la méthodeRegExp.escape().
Entrées associées
#- String.prototype.replace()Renvoie une nouvelle chaîne dans laquelle la première occurrence d’un motif (ou toutes, avec le flag g) a été remplacée par un autre texte.
- String.prototype.match()Fait correspondre une chaîne à une expression régulière. Renvoie un tableau avec la correspondance, toutes les correspondances, ou null.
- String.prototype.split()Découpe une chaîne en un tableau de fragments selon un séparateur : un caractère, un texte ou une expression régulière.
- String.prototype.replaceAll()Renvoie une nouvelle chaîne dans laquelle toutes les occurrences d’un motif ont été remplacées par le texte donné ou le résultat d’une fonction.
- String.prototype.includes()Vérifie si une chaîne contient le fragment de texte donné. Renvoie true ou false et distingue majuscules et minuscules.
- String.prototype.search()Renvoie l’indice de la première correspondance d’une expression régulière dans une chaîne, ou -1.
Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.