RegExp

Une expression régulière : un modèle pour rechercher, valider et remplacer des fragments de texte.

Renvoie
Un nouvel objet RegExp.
Sur cette page

Exemple

#
JavaScript
const postalCode = /^\d{2}-\d{3}$/

console.log(postalCode.test('00-950'))
console.log(postalCode.test('00950'))
console.log(postalCode)
Console
true
false
/^\d{2}-\d{3}$/

^ 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

#
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

#
Toutes les correspondances et la casse
JavaScript
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)
Console
['3', '15', '7', '40']
2
1
Groupes et remplacement
JavaScript
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'))
Console
28 09 2026
28.09.2026
Le piège : le drapeau g et test()
JavaScript
const hasDigit = /\d/g

console.log(hasDigit.test('a1'))
console.log(hasDigit.test('a1'))
console.log(hasDigit.test('a1'))
Console
true
false
true

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 pour new RegExp(), vous devez doubler l’antislash : "\\d".
  • N’utilisez pas le drapeau g avec test() quand vous l’appelez plusieurs fois sur la même expression. L’appel suivant peut renvoyer false.
  • 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éthode RegExp.escape().

Entrées associées

#

Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.