Rentetan dengan Regex dalam JavaScript

Ungkapan biasa boleh diwakili dalam bentuk rentetan. Ini berguna dalam kes di mana anda perlu membuat sisipan pembolehubah ke dalam regex, atau membentuknya secara dinamik.

Mari kita lihat contoh. Katakan kita mempunyai rentetan berikut:

javascriptlet str = 'img.png';

Katakan pada rentetan ini kita menggunakan ungkapan biasa berikut:

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

Mari kita tulis semula ungkapan biasa ini dalam bentuk rentetan. Ini dilakukan menggunakan objek khas RegExp:

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

Sekarang mari kita asingkan sebahagian regex ke dalam pembolehubah dan masukkan menggunakan penghubungan:

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

Dan sekarang masukkan pembolehubah menggunakan rentetan templat:

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

Dan sekarang mari kita bentukkan sebahagian regex dari array:

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

Masalah Praktikal

Задание 1

Asingkan nama zon domain ke dalam pembolehubah berasingan:

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

Ubah suai masalah sebelumnya dengan mengambil kira bahawa zon domain disimpan dalam bentuk array:

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