Stringa con espressione regolare in JavaScript

Le espressioni regolari possono essere rappresentate come stringhe. Questo è utile nel caso in cui sia necessario inserire variabili nelle regex, o formarle dinamicamente.

Vediamo un esempio. Supponiamo di avere la seguente stringa:

javascriptlet str = 'img.png';

Supponiamo che a questa stringa applichiamo la seguente espressione regolare:

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

Riscriviamo questa espressione regolare come stringa. Questo si fa utilizzando il speciale oggetto RegExp:

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

Ora estraiamo una parte della regex in una variabile e inseriamola utilizzando la concatenazione:

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

E ora inseriamo la variabile utilizzando le stringhe template:

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

E ora formiamo una parte della regex da un array:

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

Problemi pratici

Задание 1

Estrai i nomi delle zone di dominio in una variabile separata:

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

Modifica il problema precedente tenendo conto del fatto che le zone di dominio sono memorizzate come array:

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