Групи во регуларниот израз во JavaScript

Содржината на групите е достапна не само во низата за замена, туку и во самиот регуларен израз: ние можеме да ставиме нешто во група, а потоа директно во регуларниот израз да кажеме дека овде треба да стои содржината на таа група.

Содржината на групите е достапна преку нивните броеви, пред кои стои обратна коса црта. На пример, првата група ќе биде достапна вака: \1, втората група вака - \2, третата - \3 и така натаму.

Сигурен сум дека сè напишано погоре досега е доста нејасно за вас. Ова не е чудно, бидејќи групите се најмалку разбирливото место кај регуларните изрази. Ајде да разбираме преку примери.

Пример

Нека имаме вакава низа:

javascriptlet str = 'aa bb cd ef';

Ајде да ги најдеме во неја сите места каде стојат две исти букви една по друга. За решавање на задачата ќе бараме која било буква, ќе ја ставиме во група, а потоа ќе провериме, дали како следен симнал доаѓа содржината на таа група:

javascriptlet res = str.replace(/([a-z])\1/g, '!');

Како резултат во променливата ќе се запише следново:

javascript'! ! cd ef'

Пример

Нека имаме вакава низа:

javascriptlet str = 'asxca buzxb csgd';

Ајде да ги најдеме во неја сите зборови во кои првата и последната буква се исти. За решавање на задачата ќе напишеме следна шаблон: буква, пато уште една или повеќе букви, а потоа иста буква како првата:

javascriptlet res = str.replace(/([a-z])[a-z]+\1/g, '!');

Како резултат во променливата ќе се запише следново:

javascript'! ! csgd'

Практични задачи

Задание 1

Дадена е низа:

javascriptlet str = 'aaa bbb ccc xyz';

Најдете ги сите поднизи во кои има три исти букви една по друга.

Задание 2

Дадена е низа:

javascriptlet str = 'a aa aaa aaaa aaaaa';

Најдете ги сите поднизи во кои има две или повеќе исти букви една по друга.

Задание 3

Дадена е низа:

javascriptlet str = 'aaa aaa bbb bbb ccc ddd';

Најдете ги сите поднизи во кои има два исти зборови еден по друг.