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 :
let str = 'img.png';
Supposons que nous appliquions à cette chaîne l'expression régulière suivante :
let 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 :
let 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 :
let 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) :
let 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 :
let exts = ['png', 'jpg'];
let pat = exts.join('|');
let reg = new RegExp(`\.(${pat})$`);
let res = str.match(reg);
Problèmes pratiques
Extrayez les noms des zones de domaine dans une variable séparée :
let reg = /^[a-z]+\.(ru|by|ua)$/;
let res = reg.test(str);
Modifiez le problème précédent en tenant compte du fait que les zones de domaine sont stockées sous forme de tableau :
let arr = ['ru', 'by', 'ua'];