Groupes de caractères dans les expressions régulières JavaScript
Il existe des commandes spéciales qui permettent de
sélectionner directement des groupes entiers de caractères. La commande
\d signifie un chiffre de 0 à 9.
La commande \w désigne un chiffre, une lettre latine
ou le caractère de soulignement. La commande \s
désigne un espace ou un caractère d'espacement :
espace, saut de ligne, tabulation. Il est possible
d'inverser la valeur de la commande en utilisant une lettre
majuscule : par exemple, si \d est un chiffre,
alors \D est un non-chiffre.
Exemple
Trouvons tous les chiffres :
let str = '1 12 123';
let res = str.replace(/\d/g, '!');
En conséquence, la variable contiendra ce qui suit :
'! !! !!!'
Exemple
Les opérateurs de répétition considèrent les commandes de groupe
comme un tout, c'est-à-dire que les parenthèses de regroupement
ne sont pas nécessaires. Dans l'exemple suivant, le motif de recherche
est le suivant : chiffre de 0 à 9
une ou plusieurs fois :
let str = '1 12 123 abc @@@';
let res = str.replace(/\d+/g, '!');
En conséquence, la variable contiendra ce qui suit :
'! ! ! abc @@@'
Exemple
Dans l'exemple suivant, le motif de recherche est
le suivant : n'importe quoi une ou plusieurs fois,
mais pas un chiffre de 0 à 9 :
let str = '123abc3@@';
let res = str.replace(/\D+/g, '!');
En conséquence, la variable contiendra ce qui suit :
'123!3!'
Exemple
Dans cet exemple, le motif de recherche est le suivant : caractère d'espacement une fois :
let str = '1 12 123 abc @@@';
let res = str.replace(/\s/g, '!');
En conséquence, la variable contiendra ce qui suit :
'1!12!123!abc!@@@'
Exemple
Dans cet exemple, le motif de recherche est le suivant :
caractère NON espacement une ou plusieurs fois.
Toutes les sous-chaînes, séparées par des espaces, seront remplacées
par '!' :
let str = '1 12 123 abc @@@';
let res = str.replace(/\S+/g, '!');
En conséquence, la variable contiendra ce qui suit :
'! ! ! ! !'
Exemple
Dans cet exemple, le motif de recherche est le suivant :
chiffre ou lettre une ou plusieurs fois.
Toutes les sous-chaînes constituées de chiffres et de lettres
seront remplacées par '!' :
let str = '1 12 123a Abc @@@';
let res = str.replace(/\w+/g, '!');
En conséquence, la variable contiendra ce qui suit :
'! ! ! ! @@@'
Exemple
Dans cet exemple, le motif de recherche est le suivant :
NON chiffre et NON lettre une ou plusieurs fois.
Dans notre cas, cela correspond à
'@@@' et à tous les espaces (car eux aussi
ne sont ni des chiffres ni des lettres). Veuillez noter
qu'à la fin il y a un '!' - en lui
a été transformée la chaîne ' @@@' - avec
un espace au début :
let str = '1 12 123 Abc @@@';
let res = str.replace(/\W+/g, '!');
En conséquence, la variable contiendra ce qui suit :
'1!12!123!Abc!'
Tâches pratiques
Soit une chaîne :
let str = 'a1a a2a a3a a4a a5a aba aca';
Écrivez une expression régulière qui trouvera les chaînes
dans lesquelles sur les bords se trouvent les lettres 'a',
et entre elles un seul chiffre.
Soit une chaîne :
let str = 'a1a a22a a333a a4444a a55555a aba aca';
Écrivez une expression régulière qui trouvera les chaînes
dans lesquelles sur les bords se trouvent les lettres 'a',
et entre elles n'importe quel nombre de chiffres.
Soit une chaîne :
let str = 'aa a1a a22a a333a a4444a a55555a aba aca';
Écrivez une expression régulière qui trouvera les chaînes
dans lesquelles sur les bords se trouvent les lettres 'a',
et entre elles n'importe quel nombre de chiffres (y compris
zéro chiffre, c'est-à-dire la chaîne 'aa').
Soit une chaîne :
let str = 'avb a1b a2b a3b a4b a5b abb acb';
Écrivez une expression régulière qui trouvera les chaînes
du type suivant : sur les bords se trouvent les lettres
'a' et 'b', et entre elles - ni un chiffre,
ni un espace.
Soit une chaîne :
let str = 'ave a#b a2b a$b a4b a5b a-b acb';
Écrivez une expression régulière qui trouvera les chaînes
du type suivant : sur les bords se trouvent les lettres
'a' et 'b', et entre elles - ni une lettre,
ni un chiffre, ni un espace.
Soit une chaîne :
let str = 'ave a#a a2a a$a a4a a5a a-a aca';
Écrivez une expression régulière qui remplacera tous les espaces
par '!'.