Ș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:
javascriptlet str = 'img.png';
Să presupunem că aplicăm acestui șir următoarea expresie regulată:
javascriptlet 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:
javascriptlet 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:
javascriptlet pat = 'png|jpg';
let reg = new RegExp('\\.(' + pat + ')$');
let res = str.match(reg);
Și acum să inserăm variabila folosind șiruri șablon:
javascriptlet 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:
javascriptlet 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ă:
javascriptlet 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:
javascriptlet arr = ['ru', 'by', 'ua'];