Curly braces in JavaScript regular expressions
Операторите '+', '*', '?'
са добри, но с тяхна помощ не може да се укаже
конкретен брой повторения. В този случай
на помощ идва операторът {}.
Работи по следния начин: {5}
- пет повторения, {2,5} – повтаря се
от две до пет (и двете включително), {2,}
- повтаря се два или повече пъти. Обърнете внимание
на това, че такъв вариант - {,2}
- няма. Вижте примерите:
Пример
В този пример шаблонът за търсене изглежда така:
буква 'x', буква 'a' един
или два пъти, буква 'x':
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{1,2}x/g, '!');
В резултат в променливата ще се запише следното:
'xx ! ! xaaax'
Пример
В този пример шаблонът за търсене изглежда така:
буква 'x', буква 'a' два
пъти и повече, буква 'x':
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{2,}x/g, '!');
В резултат в променливата ще се запише следното:
'xx xax ! !'
Пример
В този пример шаблонът за търсене изглежда така:
буква 'x', буква 'a' три
пъти, буква 'x':
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{3}x/g, '!');
В резултат в променливата ще се запише следното:
'xx xax xaax !'
Пример
В този пример шаблонът за търсене изглежда така:
буква 'a' десет пъти:
let str = 'aaa aaaaaaaaaa aaa';
let res = str.replace(/a{10}/g, '!');
В резултат в променливата ще се запише следното:
'aaa ! aaa'
Пример
В този пример авторът на кода искаше такъв шаблон:
буква 'x', буква 'a' три
пъти и по-малко, буква 'x',
но, за съжаление, такова - {,3} - не работи.
Трябва да се укаже изрично:
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{1,3}x/g, '!');
В резултат в променливата ще се запише следното:
'xx ! ! !'
Пример
Нулата също е допустима:
let str = 'xx xax xaax xaaax';
let res = str.replace(/xa{0,3}x/g, '!');
В резултат в променливата ще се запише следното:
'! ! ! !'
Практически задачи
Даден е низ:
let str = 'aa aba abba abbba abbbba abbbbba';
Напишете регулярен израз, който ще намери низовете
'abba', 'abbba', 'abbbba'
и само тях.
Даден е низ:
let str = 'aa aba abba abbba abbbba abbbbba';
Напишете регулярен израз, който ще намери низовете
от вида 'aba', в които 'b' се среща
по-малко от 3 пъти (включително).
Даден е низ:
let str = 'aa aba abba abbba abbbba abbbbba';
Напишете регулярен израз, който ще намери низовете
от вида 'aba', в които 'b' се среща
повече от 4 пъти (включително).