Каманда 'ці' у рэгулярных выразах JavaScript
У даным уроке мы разбяром каманду
'|', якая представляе сабой больш
магутны варыянт 'ці' у параўнанні
з камандай [ ]. Даная каманда дазваляе
падзяліць рэгулярку на некалькі частак.
Пры гэтым шуканае можа трапіць альбо пад адну
частку рэгуляркі, альбо пад другую. Давайце
паглядзім на прыкладах.
Прыклад
У даным прыкладзе шаблон пошуку такі: тры
літары 'a' ці тры літары 'b':
let str = 'aaa bbb abb';
let res = str.replace(/a{3}|b{3}/g, '!');
У выніку ў зменную запішацца наступнае:
'! ! abb'
Прыклад
У даным прыкладзе шаблон пошуку такі: тры
літары 'a' ці ад 1 і больш
літар 'b':
let str = 'aaa bbb bbbb bbbbb axx';
let res = str.replace(/a{3}|b+/g, '!');
У выніку ў зменную запішацца наступнае:
'! ! ! ! axx'
Прыклад
У даным прыкладзе шаблон пошуку такі: адна ці больш літары ці тры лічбы:
let str = 'a ab abc 1 12 123';
let res = str.replace(/[a-z]+|\d{3}/g, '!');
У выніку ў зменную запішацца наступнае:
'! ! ! 1 12 !'
Прыклад
Вертыкальная рыса можа дзяліць рэгулярку не на дзве часткі, а на любую колькасць частак:
let str = 'aaa bbb ccc ddd';
let res = str.replace(/a+|b+|c+/g, '!');
У выніку ў зменную запішацца наступнае:
'! ! ! ddd'
Прыклад
Калі вертыкальная рыса стаіць унутры круглых
дужак, то 'ці' працуе толькі ўнутры
гэтых дужак.
Для прыкладу давайце знойдзем радкі па наступным
шаблоне: у пачатку стаіць ці 'a',
ці 'b' адзін ці больш разоў, а потым
две літары 'x':
let str = 'axx bxx bbxx exx';
let res = str.replace(/(a|b+)xx/g, '!');
У выніку ў зменную запішацца наступнае:
'! ! ! exx'
Практычныя задачы
Дадзены радок:
let str = 'aeeea aeea aea axa axxa axxxa';
Напішыце рэгулярку, якая знойдзе радкі
па шаблоне: па краях стаяць літары 'a',
а паміж імі - ці літара 'e' любую
колькасць разоў ці літара 'x' любую
колькасць разоў.
Дадзены радок:
let str = 'aeeea aeea aea axa axxa axxxa';
Напішыце рэгулярку, якая знойдзе радкі
па шаблоне: па краях стаяць літары 'a',
а паміж імі - ці літара 'e' два разы
ці літара 'x' любую колькасць разоў.