Formation PUB040 : JavaScript et autres bibliothèques côté client, 2020 Les expressions régulières

Les expressions régulières12.1 Trois syntaxes pour les expressions régulières


Pour travailler avec les expressions régulières en JavaScript, aussi appelées expressions rationnelles, il existe trois syntaxes différentes, chacune ayant ses avantages et inconvénients.

Notation littérale

Avec cette notation, l'expression régulière n'est pas entourée d'apostrophes ni de guillemets.

L'expression sera compilée dès le moment où elle est évaluée. Ceci est utile, notamment, lorsque l'expression régulière fait partie d'une boucle puisqu'elle sera compilée une seule fois.

L'expression régulière doit :

  • Débuter par une barre oblique
  • Poursuivre avec le patron en tant que tel (aussi appelé motif)
  • Se terminer par une barre oblique
  • Optionnellement ajouter des marqueurs (en anglais, flags) après la dernière barre oblique

Par exemple, pour cibler chacune des cellules d'un tableau HTML :

JavaScript

/(<td)(.*)(<\/td>)/g

Dans cet exemple, le modifieur g (Global) assure que toutes les cellules seront ciblées et non seulement la première.

Constructeur de la classe RegExp

Une autre technique consiste à travailler avec le constructeur de la classe RegExp.

L'expression sera compilée au moment de l'exécution. Ceci est utile, notamment, pour cibler plusieurs parties du texte alors qu'un caractère à la fin d'une partie est également utilisé pour la partie suivante.

Par exemple, dans le texte | bonjour | salut |, le patron qui cible du texte entre deux | devra utiliser un objet RexExp pour que le | du milieu puisse être utilisé pour la première et pour la seconde partie.

Avec cette notation :

  • Le premier paramètre du constructeur est le patron, placé entre apostrophes ou guillemets. Contrairement à la notation littérale, il n'y a pas de barres obliques au début et à la fin du patron.
  • Le second paramètre, optionnel, est consitué des marqueurs, placés eux aussi entre apostrophes ou guillemets.

Attention : puisque le patron est placé entre apostrophes ou guillemets, la barre oblique inverse jouera son rôle d'échappement lorsque le constructeur recevra la chaîne en paramètre. Il faut donc doubler chaque barre oblique inverse (double backslash), par exemple : \\/ pour cibler une barre oblique dans le texte, \\. pour cibler un point, \\d pour un caractère numérique, \\n pour un saut de ligne, etc.

Ex :

JavaScript

new RegExp('(<td)(.*)(<\\/td>)', 'g')

Notation littérale dans un constructeur

Depuis EMMAScript 6, il est possible de travailler avec une combinaison des deux premières approches.

Ex :

JavaScript

new RegExp(/(<td)(.*)(<\/td>)/, 'g')

Pour plus d'information

« RegExp ». MDN. https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/RegExp

« Expressions rationnelles ». MDN. https://developer.mozilla.org/fr/docs/Web/JavaScript/Guide/Expressions_r%C3%A9guli%C3%A8res

« RegExp tester ». gskinner. https://regexr.com/

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !

Site fièrement hébergé chez A2 Hosting.

Soumettre