Șir cu expresie regulată în JavaScript

Expresiile regulate pot fi reprezentate sub formă de șiruri. Acest lucru este convenabil în cazul în care trebuie să faci inserții de variabile în expresiile regulate, sau să le formezi dinamic.

Să ne uităm la un exemplu. Să presupunem că avem următorul șir:

javascriptlet str = 'img.png';

Să presupunem că aplicăm acestui șir următoarea expresie regulată:

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

Să rescriem această expresie regulată sub formă de șir. Acest lucru se face cu ajutorul unui obiect special RegExp:

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

Să extragem acum o parte a expresiei regulate într-o variabilă și să o inserăm folosind concatenare:

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

Și acum să inserăm variabila folosind șiruri șablon:

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

Și acum să formăm o parte a expresiei regulate dintr-un array:

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

Probleme practice

Задание 1

Extrage denumirile zonelor de domeniu într-o variabilă separată:

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

Modifică problema anterioară ținând cont de faptul că zonele de domeniu sunt stocate sub formă de array:

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