Ciąg znaków z wyrażeniem regularnym w JavaScript

Wyrażenia regularne można przedstawiać w postaci ciągów znaków. Jest to wygodne w przypadku, gdy konieczne jest wstawianie zmiennych do wyrażeń regularnych lub tworzenie ich dynamicznie.

Spójrzmy na przykład. Załóżmy, że mamy następujący ciąg znaków:

javascriptlet str = 'img.png';

Załóżmy, że do tego ciągu stosujemy następujące wyrażenie regularne:

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

Przepiszmy to wyrażenie regularne w postaci ciągu znaków. Robi się to za pomocą specjalnego obiektu RegExp:

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

Wyjmijmy teraz część wyrażenia regularnego do zmiennej i wstawmy ją za pomocą konkatenacji:

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

A teraz wstawmy zmienną za pomocą łańcuchów szablonowych:

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

A teraz utwórzmy część wyrażenia regularnego z tablicy:

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

Zadania praktyczne

Задание 1

Wynieś nazwy domen najwyższego poziomu do oddzielnej zmiennej:

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

Zmodyfikuj poprzednie zadanie biorąc pod uwagę, że domeny najwyższego poziomu przechowywane są w postaci tablicy:

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