Histoire d’avoir un mémo quelque part :
- En Javascript le début et la fin d’expression de recherche se définit avec un / (slash)
- Caractère d’échappement : \ (anti-slash)
- Pour ignorer la casse : utiliser i après la RegEx (ou en option de recherche)
- Pour répéter plusieurs fois : utiliser g après la RegEx
- Choix multiple : séparer les items par un | (pipe)
- Début de chaîne : ^
- Fin de chaîne : $
- Liste de caractères : [<liste des caractères>] (ex: [aeiouy])
- Intervalle de caractères : [<premier caractère>-<dernier caractère>] (exemple : [a-z])
- Pour exclure des caractères il suffit d’ajouter un ^ au début de la liste ou de l’intervalle
- On peut combiner intervalles et listes
- Inutile d’échapper au sein d’une liste ou d’un intervalle, ou d’une combinaison, sauf pour les / (slash) et \ (anti-slash)
- Caractère quelconque : . (point)
- Quantificateurs, à placer après un élément recherché (peu importe lequel) :
- 0 ou 1 fois : ? (ex : https?)
- 1 ou plusieurs fois : +
- 0, 1 ou plusieurs fois : *
- n fois : {n}
- n à m fois : {n,m}
- n fois à l’infini : {n,} (noter la virgule seule)
- Pour les quantificateurs potentiellement supérieurs à 1 (+, *, …) rajouter un ? (greedy) permet de s’arrêter au premier élément correspondant, au lieu du dernier, ex : /<a href=”(.+?)”>/ .
- Types génériques :
- \d : Caractère décimal
- \D : Tout sauf un caractère décimal
- \s : Espace, tabulation, … (inclut aussi les retours à la ligne)
- \S : Tout sauf une espace, tabulation, …
- \w : Lettre, accentuée ou pas, et _ (underscore)
- \W : Tout sauf une lettre, accentuée ou pas ou un underscore
- \n : Retour à la ligne
- \t : Tabulation
- \b : Limite de mot (un caractère accentué en est une)
- \B : Tout sauf une limite de mot
- Captures :
- (<élément à trouver>) : retourne l’élément (si trouvé) dans $n (n valant de 1 à 9 en fonction de la position de la capture)
- Pour ne rien retourner, utiliser (?:<élément à trouver>), permet « d’économiser » des positions de capture (limitées à 9)
- Dans une chaîne de remplacement le $ doit être doublé pour être traité de manière littérale.