|
|||||||
|
|||||||
|
• | Astuces HTML | • | Expressions régulières | • |
Les Regex permettent de contrôler le formatage d'une chaîne de caractères.
Les Regex sont utilisées pour trois types d'action :
Il est important de noter que les expressions régulières sont aussi appellées expressions rationnelles et plus communémant Regex ou Regexp que nous utiliserons dans la suite de cette astuce. |
Un RegExp est composé d'un motif qui représente l'expression elle-même, ainsi que d'un drapeau [optionnel] qui permet de préciser son comportement.
|
||||||||||
OU | ||||||||||
|
Valeur | Effet |
---|---|
g | permet de rechercher globalement toutes les occurences qui correspondent au motif |
i | permet de faire une recherche insensible à la casse, c'est-à-dire qu'on ne prend pas en compte l'écriture en majuscule ou minuscule de la chaîne |
gi | combine les deux drapeaux précédents |
Les symboles "^" et "$" indiquent respectivement le début et la fin d'une chaîne, et permettent donc de la délimiter.
Symbole | Motif | Résultat | Exemple |
---|---|---|---|
^ | "^a" | chaîne qui commence par "a" | "a" ⇨ true "abc" ⇨ true "cba" ⇨ false |
$ | "a$" | chaîne qui se termine par "a" | "a" ⇨ true "cba" ⇨ true "abc" ⇨ false |
^ ... $ | "^a$" | chaîne qui commence et se termine par "a" | "a" ⇨ true "aba" ⇨ true "abc" ⇨ false |
... | "a" | chaîne contenant la chaîne "a" | "a" ⇨ true "bab" ⇨ true "bcd" ⇨ false |
Les symboles "*", "+" et "?", signifient respectivement "zéro ou plusieurs", "au moins un", "un ou aucun", et permettent de donner une notion de quantité.
Symbole | Motif | Résultat | Exemple |
---|---|---|---|
* | "abc*" | chaîne qui contient "ab" immédiatement suivie de zéro ou plusieurs "c" | "abd" ⇨ true "abccd" ⇨ true "abdc" ⇨ false |
+ | "abc+" | chaîne qui contient "ab" immédiatement suivie de un ou plusieurs "c" | "abcd" ⇨ true "abccd" ⇨ true "abd" ⇨ false |
? | "abc?" | chaîne qui contient "ab" immédiatement suivie de zéro ou un "c" | "abd" ⇨ true "abcd" ⇨ true "abccd" ⇨ false |
^ ... + | "^abc+" | chaîne commençant par "ab" immédiatement suivie de un ou plusieurs "c" | "abcd" ⇨ true "abccd" ⇨ true "abdc" ⇨ false "dabc" ⇨ false |
Les accolades "{" et "}" permettent de préciser le nombre d'occurences.
Symbole | Motif | Résultat | Exemple |
---|---|---|---|
{X} | "abc{X}d" | chaîne qui contient "ab" suivie immédiatement de X "c" | X = 2 (pour l'exemple) "abccd" ⇨ true "abcccd" ⇨ false |
{X,} | "abc{X,}d" | chaîne qui contient "ab" suivie immédiatement de X "c" ou plus | X = 2 (pour l'exemple) "abccd" ⇨ true "abcccd" ⇨ true "abcdc" ⇨ false |
{X,Y} | "abc{X,Y}d" | chaîne qui contient "ab" suivie immédiatement de X à Y "c" | X = 2 et Y = 4 (pour l'exemple) "abccd" ⇨ true "abccccd" ⇨ true "abcd" ⇨ false "abcccccd" ⇨ false |
Nous pouvons maintenant écrire les équivalences suivantes :
|
Les parenthèses "(" et ")" permettent de définir une séquence de caractères. Il est possible de récupérer les occurences correspondant au motif entre parenthèses en utilisant la méthode exec() de l'objet RegExp ou les méthodes search(), match() et replace() de l'objet String.
Dans ce cas vous noterez que la barre verticale "|" se comporte en tant qu'opérateur OU.
Symbole | Motif | Résultat | Exemple |
---|---|---|---|
( ... ) | "a(bc)+" | chaîne qui contient "a" suivie de au moins une occurence de la chaîne "bc" | "abc" ⇨ true "dabcbcd" ⇨ true "abdc" ⇨ false |
( ... | ... ) | "(ab|cd)" | chaîne qui contient "ab" ou "cd" | "ab" ⇨ true "abecd" ⇨ true "bc" ⇨ false |
Vous pouvez constater que l'opération ET se passe d'opérateur. |
Le point "." représente une occurence de n'importe quel caractère. Cela peut permettre, par exemple de s'assurer de la longueur d'une chaine.
Symbole | Motif | Résultat | Exemple |
---|---|---|---|
. | "^.{X}$" | chaîne qui contient X caractères quelconques | X = 3 (pour l'exemple) "a1!" ⇨ true "a1" ⇨ true "a1b2" ⇨ false |
.* | ".*" | Tous les caractères | "a" ⇨ true "1a2b!" ⇨ true |
Les crochets "[" et "]" définissent une liste de caractères.
Le signe moins "-" permet de définir un intervalle.
Le caractère "^" indique une interdiction.
Symbole | Motif | Résultat | Exemple |
---|---|---|---|
[ ... ] | "[abc]" | chaîne qui contient un "a", un "b", ou un "c" | "a" ⇨ true "abcdcba" ⇨ true "def" ⇨ false |
[ ... - ... ] | "[a-z]" | chaîne qui contient un caractère compris entre "a" et "z" | "a" ⇨ true "1m" ⇨ true "1" ⇨ false |
[ ... - ... ] | "[A-G]" | chaîne qui contient un caractère compris entre "A" et "G" | "A" ⇨ true "1B" ⇨ true "1M" ⇨ false |
[^ ... - ... ] | "[^a-zA-Z]" | chaîne qui ne contient pas de lettre | "1" ⇨ true "1m" ⇨ false |
^[^ ... - ... ] | "^[^a-zA-Z]" | chaîne qui ne commence pas par des lettres | "1" ⇨ true "/m" ⇨ true "m1" ⇨ false |
ATTENTION : Entre crochet, chaque caractère est représenté par sa valeur.
|
Symbole | Motif | Résultat | Exemple |
---|---|---|---|
[] ... ] | "[]a]" | chaîne qui contient un "]" ou "a" | "]]" ⇨ true "[abcd]" ⇨ true "bc" ⇨ false |
[ ... [] | "[abc[]" | chaîne qui contient un "[" ou "a" | "[[" ⇨ true "[abcd]" ⇨ true "bc" ⇨ false |
[^[] ... ] | "[^[]a]" | chaîne qui ne contient pas de "[", de "]" et de "a" | "bcd" ⇨ true "[" ⇨ false "[abcd]" ⇨ false |
[-[] ... ] | "[-[]a]" | chaîne qui contient un "-", un "[", un "]" ou un "a" | "[[" ⇨ true "[-1]" ⇨ true "bc" ⇨ false |
[ ... ] | "[\+?{}.]" | chaîne qui contient un ou plusieurs de ces six caractères | "." ⇨ true "\\local\test.exe" ⇨ true "abc" ⇨ false |
Pour rechercher un caractère spécial, il suffit de le faire précéder d'un antislash "\", sauf dans le cas d'un ensemble de caractères entre crochets.
Caractère spécial | Echappement |
---|---|
\ | \\ |
. | \. |
$ | \$ |
[ | \[ |
] | \] |
( | \( |
) | \) |
{ | \{ |
} | \} |
^ | \^ |
? | \? |
* | \* |
+ | \+ |
- | \- |
Il existe enfin des alias qui permettent de simplifier les écritures de RegExp et de capturer certain carcères de mise en page.
Symbole | Motif | Résultat | Exemple |
---|---|---|---|
\b ... | "\bWeb" | Permet de capturer une chaine de carctère, situés en début de mot | "WebMasterHelp" ⇨ true "Help Master Web" ⇨ true "HelpMasterWeb" ⇨ false |
... \b | "\bHelp" | Permet de capturer une chaine de carctère, situés en fin de mot | "WebMasterHelp" ⇨ true "Help Master Web" ⇨ true "HelpMasterWeb" ⇨ false |
... \B | "Master\B" | Permet de capturer une chaine de carctère non précédés ou suivis d'une coupure de mot, c'est-à-dire situés au milieu d'un mot | "WebMasterHelp" ⇨ true "Web Master Help" ⇨ false |
\c ... | "\cV" | Permet de capturer le caractère de contrôle (combinaison de touches Ctrl + V qui correspond à l'action "coller") | |
\d | "\d" | Permet de capturer un caractère numérique \d <=> [0-9] |
"1" ⇨ true "a" ⇨ false |
\f | "\f" | Permet de capturer un saut de page | |
\n | "\n" | Permet de capturer un saut de ligne | |
\r | "\r" | Permet de capturer un retour chariot | |
\s | "\s" | Permet de capturer un "caractère blanc" (espace, retour chariot, tabulation, saut de ligne, saut de page) \s <=> [\f\n\r\t\v] |
|
\S | "\S" | Permet de capturer un "caractère non blanc" \S <=> [^\f\n\r\t\v] |
|
\t | "\t" | Permet de capturer une tabulation horizontale | |
\v | "\v" | Permet de capturer une tabulation verticale | |
\w | "\w" | Permet de capturer un caractère alphanumérique, y compris le caractère underscore "_" \w <=> [a-zA-Z0-9_] |
"a" ⇨ true "^_^" ⇨ true "!?!" ⇨ false |
\W | "\W" | Permet de capturer un caractère non alphanumérique \W <=> [^a-zA-Z0-9_] |
"!" ⇨ true "_" ⇨ false "abc123" ⇨ false |
\oX | "\o001" | Permet de capturer un nombre en base octale (base 8) | |
\xX | "\x41" | Permet de capturer un nombre en base hexadécimale (base 16) |
La fonction "test" permet de tester si une chaine de caractère respecte le motif d'un RegExp.
La fonction "replace" permet de remplacer une chaine de caractère défini par le motif d'un RegExp dans une chaine de caractère.
Dans cet exemple nous allons utiliser les RegExp pour tester le contenu d'un input et supprimer les carctères indésirables en temps réel.
|
|