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:
let str = 'img.png';
Katakan pada rentetan ini kita menggunakan ungkapan biasa berikut:
let reg = /\.(png|jpg)$/;
let res = str.match(reg);
Mari kita tulis semula ungkapan biasa ini
dalam bentuk rentetan. Ini dilakukan menggunakan
objek khas RegExp:
let reg = new RegExp('\.(png|jpg)$');
let res = str.match(reg);
Sekarang mari kita asingkan sebahagian regex ke dalam pembolehubah dan masukkan menggunakan penghubungan:
let pat = 'png|jpg';
let reg = new RegExp('\.(' + pat + ')$');
let res = str.match(reg);
Dan sekarang masukkan pembolehubah menggunakan rentetan templat:
let pat = 'png|jpg';
let reg = new RegExp(`\.(${pat})$`);
let res = str.match(reg);
Dan sekarang mari kita bentukkan sebahagian regex dari array:
let exts = ['png', 'jpg'];
let pat = exts.join('|');
let reg = new RegExp(`\.(${pat})$`);
let res = str.match(reg);
Masalah Praktikal
Asingkan nama zon domain ke dalam pembolehubah berasingan:
let reg = /^[a-z]+\.(ru|by|ua)$/;
let res = reg.test(str);
Ubah suai masalah sebelumnya dengan mengambil kira bahawa zon domain disimpan dalam bentuk array:
let arr = ['ru', 'by', 'ua'];