Въведение в регулярните изрази в 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'.