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'];