Регулярӣ ибораҳо бо сатр дар JavaScript
Ифодаҳои регулярӣ метавонанд ба шакли сатрҳо ифода карда шаванд. Ин дар он сурат мувофиқ аст, ки ба шумо лозим аст, ки тағирёбандаҳоро ба ибораҳои регулярӣ дохил кунед, ё онҳоро ба таври динамикӣ ташкил кунед.
Биёед мисолро бубинем. Фарз кунем, ки мо сатри зеринро дорем:
javascriptlet str = 'img.png';
Фарз кунем, ки ба ин сатр мо ифодаи регулярии зеринро истифода мебарем:
javascriptlet reg = /\.(png|jpg)$/;
let res = str.match(reg);
Биёед ин ифодаи регуляриро
ба шакли сатр нависем. Ин бо ёрии
объекти махсус RegExp анҷом дода мешавад:
javascriptlet reg = new RegExp('\.(png|jpg)$');
let res = str.match(reg);
Акнун биёед як қисми ибораи регуляриро ба тағирёбанда гузорем ва онро бо ёрии конкатенатсия дохил кунем:
javascriptlet pat = 'png|jpg';
let reg = new RegExp('\.(' + pat + ')$');
let res = str.match(reg);
Акнун тағирёбандаро бо истифода аз сатрҳои шаблонӣ дохил кунем:
javascriptlet pat = 'png|jpg';
let reg = new RegExp(`\.(${pat})$`);
let res = str.match(reg);
Акнун як қисми ибораи регуляриро аз массив ташкил кунем:
javascriptlet exts = ['png', 'jpg'];
let pat = exts.join('|');
let reg = new RegExp(`\.(${pat})$`);
let res = str.match(reg);
Масъалаҳои амалӣ
Номҳои минтақаҳои доменро ба тағирёбандаи ҷудогона гузоред:
javascriptlet reg = /^[a-z]+\.(ru|by|ua)$/;
let res = reg.test(str);
Масъалаи қаблиро бо назардошти он таҳрир кунед, ки минтақаҳои доменҳо дар шакли массив нигоҳ дошта мешаванд:
javascriptlet arr = ['ru', 'by', 'ua'];