Șir cu expresie regulată în JavaScript
Expresiile regulate pot fi reprezentate sub formă de șiruri. Acest lucru este convenabil în cazul în care trebuie să faci inserții de variabile în expresiile regulate, sau să le formezi dinamic.
Să ne uităm la un exemplu. Să presupunem că avem următorul șir:
let str = 'img.png';
Să presupunem că aplicăm acestui șir următoarea expresie regulată:
let reg = /\.(png|jpg)$/;
let res = str.match(reg);
Să rescriem această expresie regulată
sub formă de șir. Acest lucru se face cu ajutorul
unui obiect special RegExp:
let reg = new RegExp('\\.(png|jpg)$');
let res = str.match(reg);
Să extragem acum o parte a expresiei regulate într-o variabilă și să o inserăm folosind concatenare:
let pat = 'png|jpg';
let reg = new RegExp('\\.(' + pat + ')$');
let res = str.match(reg);
Și acum să inserăm variabila folosind șiruri șablon:
let pat = 'png|jpg';
let reg = new RegExp(`\\.(${pat})$`);
let res = str.match(reg);
Și acum să formăm o parte a expresiei regulate dintr-un array:
let exts = ['png', 'jpg'];
let pat = exts.join('|');
let reg = new RegExp(`\\.(${pat})$`);
let res = str.match(reg);
Probleme practice
Extrage denumirile zonelor de domeniu într-o variabilă separată:
let reg = /^[a-z]+\.(ru|by|ua)$/;
let res = reg.test(str);
Modifică problema anterioară ținând cont de faptul că zonele de domeniu sunt stocate sub formă de array:
let arr = ['ru', 'by', 'ua'];