Вовед во регуларни изрази во JavaScript
Регуларните изрази се такви команди за сложно пребарување и замена (или само пребарување). Тие овозможуваат да се прават многу интересни работи, но, за жал, прилично се тешки за совладување.
Постојат неколку JavaScript методи за
работа со регуларни изрази. Ќе започнеме
да се запознаваме со нив на примерот на replace
- веќе сте запознаени со овој метод: тој првиот
параметар прифаќа што да се смени, а вториот
- на што да се смени. А самиот метод се применува
на низата, во која се врши замената:
'bab'.replace('a', '!'); // ќе врати 'b!b'
Како прв параметар на овој метод може да се пренесе
не само низа, туку регуларен израз.
Регуларниот израз претставува збир
од команди, сместени внатре во коси црти /. Овие
коси црти се нарекуваат ограничувачи на регуларните
изрази.
Самите регуларни изрази се состојат од два типа на знаци: од оние, кои означуваат самите себе и од знаци-команди, кои се нарекуваат специјални знаци.
Буквите и бројките означуваат самите себе. Во следниот
пример со помош на регуларен израз
ќе ја замениме буквата 'a' со !:
'bab'.replace(/a/, '!'); // ќе врати 'b!b'
А точката е специјален знак
и означува кој било знак. Во следниот
пример ќе ја најдеме низата според таква шема:
буква 'x', потоа кој било знак, потоа
повторно буква 'x':
'xax eee'.replace(/x.x/, '!'); // ќе врати '! eee'
После ограничувачите може да се пишуваат модификатори
- команди, кои ги менуваат општите својства
на регуларниот израз. На пример, модификаторот
g го вклучува режимот на глобално пребарување
и замена - без него регуларката бара само
првото совпаѓање, а со него - сите совпаѓања.
Во следниот пример не е наведен модификатор
g и регуларката ќе најде само првото
совпаѓање:
'aab'.replace(/a/, '!'); // ќе врати '!ab'
А сега регуларката ќе ги најде сите совпаѓања:
'aab'.replace(/a/g, '!'); // ќе врати '!!b'
Дадена е низа:
let str = 'ahb acb aeb aeeb adcb axeb';
Напишете регуларка, која ќе ги најде низите
'ahb', 'acb', 'aeb'
според шемата: буква 'a', кој било знак,
буква 'b'.
Дадена е низа:
let str = 'aba aca aea abba adca abea';
Напишете регуларка, која ќе ги најде низите
'abba', 'adca', 'abea'
според шемата: буква 'a', 2
какви било знаци, буква 'a'.
Дадена е низа:
let str = 'aba aca aea abba adca abea';
Напишете регуларка, која ќе ги најде низите
'abba' и 'abea', без да ја захвати
'adca'.