Řetězec s regulárním výrazem v JavaScriptu
Regulární výrazy lze reprezentovat jako řetězce. To je užitečné v případě, kdy potřebujete vkládat proměnné do regulárních výrazů nebo je vytvářet dynamicky.
Podívejme se na příklad. Předpokládejme, že máme následující řetězec:
let str = 'img.png';
Předpokládejme, že na tento řetězec aplikujeme následující regulární výraz:
let reg = /\.(png|jpg)$/;
let res = str.match(reg);
Přepišme tento regulární výraz
do podoby řetězce. To se provádí pomocí
speciálního objektu RegExp:
let reg = new RegExp('\.(png|jpg)$');
let res = str.match(reg);
Nyní vyjmeme část regulárního výrazu do proměnné a vložíme ji pomocí řetězení:
let pat = 'png|jpg';
let reg = new RegExp('\.(' + pat + ')$');
let res = str.match(reg);
A nyní vložme proměnnou pomocí šablonových řetězců:
let pat = 'png|jpg';
let reg = new RegExp(`\.(${pat})$`);
let res = str.match(reg);
A nyní vytvoříme část regulárního výrazu z pole:
let exts = ['png', 'jpg'];
let pat = exts.join('|');
let reg = new RegExp(`\.(${pat})$`);
let res = str.match(reg);
Praktické úlohy
Vytáhněte názvy doménových zón do samostatné proměnné:
let reg = /^[a-z]+\.(ru|by|ua)$/;
let res = reg.test(str);
Upravte předchozí úlohu s ohledem na to, že doménové zóny jsou uloženy jako pole:
let arr = ['ru', 'by', 'ua'];