Групи во регуларниот израз во JavaScript
Содржината на групите е достапна не само во низата за замена, туку и во самиот регуларен израз: ние можеме да ставиме нешто во група, а потоа директно во регуларниот израз да кажеме дека овде треба да стои содржината на таа група.
Содржината на групите е достапна преку нивните броеви,
пред кои стои обратна коса црта. На пример,
првата група ќе биде достапна вака: \1,
втората група вака - \2, третата
- \3 и така натаму.
Сигурен сум дека сè напишано погоре досега е доста нејасно за вас. Ова не е чудно, бидејќи групите се најмалку разбирливото место кај регуларните изрази. Ајде да разбираме преку примери.
Пример
Нека имаме вакава низа:
let str = 'aa bb cd ef';
Ајде да ги најдеме во неја сите места каде стојат две исти букви една по друга. За решавање на задачата ќе бараме која било буква, ќе ја ставиме во група, а потоа ќе провериме, дали како следен симнал доаѓа содржината на таа група:
let res = str.replace(/([a-z])\1/g, '!');
Како резултат во променливата ќе се запише следново:
'! ! cd ef'
Пример
Нека имаме вакава низа:
let str = 'asxca buzxb csgd';
Ајде да ги најдеме во неја сите зборови во кои првата и последната буква се исти. За решавање на задачата ќе напишеме следна шаблон: буква, пато уште една или повеќе букви, а потоа иста буква како првата:
let res = str.replace(/([a-z])[a-z]+\1/g, '!');
Како резултат во променливата ќе се запише следново:
'! ! csgd'
Практични задачи
Дадена е низа:
let str = 'aaa bbb ccc xyz';
Најдете ги сите поднизи во кои има три исти букви една по друга.
Дадена е низа:
let str = 'a aa aaa aaaa aaaaa';
Најдете ги сите поднизи во кои има две или повеќе исти букви една по друга.
Дадена е низа:
let str = 'aaa aaa bbb bbb ccc ddd';
Најдете ги сите поднизи во кои има два исти зборови еден по друг.