Une expression régulière est composée de différents types d'éléments.
La recherche se fera en parcourant, dans le sens de lecture de la chaîne (de droite à gauche) si la chaîne à tester correspond à la chaîne attendue.
On trouvera donc souvent des caractères littéraux, par exemple, dans l'expression /abc/, on recherchera la présence de la sous-chaîne "abc" dans la chaîne à tester.
Mais nous aurons souvent besoin (et c'est ce qui constitue l'intérêt des expressions régulières) de chercher des types de caractères un nombre de fois prédéfini.
D'autre part, nous aurons aussi souvent besoin de retrouver des sous-parties du masque de recherche dans le résultat renvoyé.
Les crochets :
Les crochets correspondent à des classes (ou ensembles) de caractères. On place à l'intérieur tous les caractères que l'on attend à l'emplacement donné de la chaîne.
Expression |
Explication |
Exemple |
[abc] |
N'importe quel caractère dans les crochets |
[abcdef] |
[^abc] |
N'importe quel caractère sauf ceux des crochets |
[^abcdef] |
[a-z] |
N'importe quel caractère dans l'intervalle |
[d-y], [4-7], [C-M] |
[^a-z] |
N'importe quel caractère sauf ceux dans l'intervalle |
[^d-y], [^4-7], [^C-M] |
Notez que le caractère tiret ("-") permet d'indiquer une plage de caractères (par exemple, /[a-z]/ correspond à toutes les lettres de "a" à "z", si vous devez rechercher le caractère tiret, vous devrez l'échapper en le faisant précéder d'un antislash ("\"). Une autre possibilité est de placer le tiret en début ou en fin de classe, dans ce cas, il perd sa signification (par exemple /[-abc]/ pour rechercher les caractères tiret, a, b ou c.
Les parenthèses :
Les parenthèses peuvent avoir plusieurs fonctions. Elles permettent d'offrir un
choix à JavaScript. Par exemple /po(mme|ire)/, accepterait pomme comme poire. On
peut aussi utiliser l'expression ?! pour exprimer la négation : Win(?!32) qui veut
dire Win sauf 32. Lorsqu'utilisées avec la méthode match, les parenthèses disent
à JavaScript ce qu'il faut aller chercher. Par exemple :
" 36 pommes " . match (/ ([ 0 - 9 ] + )\spommes/ )
|
Les parenthèses peuvent aussi être utilisées avec des quantifieurs pour éviter la répétition :
/ (pommes){ 3 } / . test (' pommespommespommes ' );
|
Les quantifieurs :
Expression |
Explication |
Exemple |
expression{n} |
L'expression 'n' fois |
/[a-z]{3}/ |
expression{n,} |
L'expression au moins 'n' fois |
/[a-z]{5,}/ |
expression{n,m} |
L'expression de 'n' à 'm' fois |
/[a-z]{10,20}/ |
expression+ |
Équivalent de {1,} |
/[a-z]+/ |
expression* |
Équivalent de {0,} |
/[a-z]*/ |
expression? |
Équivalent de {0,1} |
/[a-z]?/ |
Les expressions de positionnement :
Expression |
Explication |
Exemple |
/^ |
Marque le début de la chaîne |
/^pommes/.test('pommes bleues'); // true /^pommes/.test('des pommes'); // false |
$/ |
Marque la fin de la chaîne |
/pommes$/.test('des pommes'); // true /pommes$/.test('pommes bleues'); // false |
Les caractères spéciaux (ou classes prédéfinies) :
Caractère |
Explication |
. |
Tous les caractères sauf \n |
\w |
[a-zA-Z0-9_] |
\W |
[^a-zA-Z0-9_] |
\d |
[0-9] |
\D |
[^0-9] |
\s |
Tout caractère d'espacement (incluant, par exemple, les tabulations) |
\S |
Tout sauf un espace |
\b |
Équivaut le mot |
\B |
N'équivaut pas le mot |
\0 |
NUL |
\n |
Saut de ligne |
\r |
Retour à la ligne |
\f |
Saut de page |
\t |
Tabulation |
\v |
Tabulation verticale |
\xdd |
Caractère hexadécimal |
\uxxxx |
Caractère Unicode hexadécimal |
|