Chaîne avec une expression régulière en JavaScript

Les expressions régulières peuvent être représentées sous forme de chaînes. C'est pratique dans le cas où vous avez besoin de faire des insertions de variables dans les regex, ou de les former dynamiquement.

Regardons un exemple. Supposons que nous ayons la chaîne suivante :

javascriptlet str = 'img.png';

Supposons que nous appliquions à cette chaîne l'expression régulière suivante :

javascriptlet reg = /\.(png|jpg)$/;
let res = str.match(reg);

Réécrivons cette expression régulière sous forme de chaîne. Cela se fait à l'aide de l'objet spécial RegExp :

javascriptlet reg = new RegExp('\.(png|jpg)$');
let res = str.match(reg);

Maintenant, mettons une partie de la regex dans une variable et insérons-la en utilisant la concaténation :

javascriptlet pat = 'png|jpg';
let reg = new RegExp('\.(' + pat + ')$');
let res = str.match(reg);

Et maintenant, insérons la variable en utilisant des littéraux de gabarits (template strings) :

javascriptlet pat = 'png|jpg';
let reg = new RegExp(`\.(${pat})$`);
let res = str.match(reg);

Et maintenant, formons une partie de la regex à partir d'un tableau :

javascriptlet exts = ['png', 'jpg'];
let pat  = exts.join('|');
let reg  = new RegExp(`\.(${pat})$`);
let res  = str.match(reg);

Problèmes pratiques

Задание 1

Extrayez les noms des zones de domaine dans une variable séparée :

javascriptlet reg = /^[a-z]+\.(ru|by|ua)$/;
let res = reg.test(str);
Задание 2

Modifiez le problème précédent en tenant compte du fait que les zones de domaine sont stockées sous forme de tableau :

javascriptlet arr = ['ru', 'by', 'ua'];