Accolades dans les expressions régulières JavaScript
Les opérateurs '+', '*', '?'
sont utiles, cependant, ils ne permettent pas de spécifier
un nombre exact de répétitions. Dans ce cas,
l'opérateur {} viendra à votre rescousse.
Il fonctionne de la manière suivante : {5}
- cinq répétitions, {2,5} – se répète
de deux à cinq fois (inclus), {2,}
- se répète deux fois ou plus. Notez
qu'une telle variante - {,2}
- n'existe pas. Regardez les exemples :
Exemple
Dans cet exemple, le modèle de recherche est le suivant :
lettre 'x', lettre 'a' une
ou deux fois, lettre 'x' :
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{1,2}x/g, '!');
En conséquence, la variable contiendra ce qui suit :
'xx ! ! xaaax'
Exemple
Dans cet exemple, le modèle de recherche est le suivant :
lettre 'x', lettre 'a' deux
fois ou plus, lettre 'x' :
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{2,}x/g, '!');
En conséquence, la variable contiendra ce qui suit :
'xx xax ! !'
Exemple
Dans cet exemple, le modèle de recherche est le suivant :
lettre 'x', lettre 'a' trois
fois, lettre 'x' :
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{3}x/g, '!');
En conséquence, la variable contiendra ce qui suit :
'xx xax xaax !'
Exemple
Dans cet exemple, le modèle de recherche est le suivant :
lettre 'a' dix fois :
let str = 'aaa aaaaaaaaaa aaa';
let res = str.replace(/a{10}/g, '!');
En conséquence, la variable contiendra ce qui suit :
'aaa ! aaa'
Exemple
Dans cet exemple, l'auteur du code voulait ce modèle :
lettre 'x', lettre 'a' trois
fois ou moins, lettre 'x',
mais, malheureusement, cela - {,3} - ne fonctionne pas.
Il faut le spécifier explicitement :
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{1,3}x/g, '!');
En conséquence, la variable contiendra ce qui suit :
'xx ! ! !'
Exemple
Zéro est également autorisé :
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{0,3}x/g, '!');
En conséquence, la variable contiendra ce qui suit :
'! ! ! !'
Problèmes pratiques
Soit une chaîne :
let str = 'aa aba abba abbba abbbba abbbbba';
Écrivez une expression régulière qui trouvera les chaînes
'abba', 'abbba', 'abbbba'
et seulement elles.
Soit une chaîne :
let str = 'aa aba abba abbba abbbba abbbbba';
Écrivez une expression régulière qui trouvera les chaînes
de type 'aba', dans lesquelles 'b' apparaît
moins de 3 fois (inclus).
Soit une chaîne :
let str = 'aa aba abba abbba abbbba abbbbba';
Écrivez une expression régulière qui trouvera les chaînes
de type 'aba', dans lesquelles 'b' apparaît
plus de 4 fois (inclus).