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
Asingkan nama zon domain ke dalam pembolehubah berasingan:
javascriptlet 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:
javascriptlet arr = ['ru', 'by', 'ua'];