Групы сімвалаў у рэгулярных выразах JavaScript
Існуюць спецыяльныя каманды, якія дазваляюць
выбраць адразу цэлыя групы сімвалаў. Каманда
\d азначае лічбу ад 0 да 9.
Каманда \w абазначае лічбу, лацінскую
літару ці знак падкрэслівання. Каманда \s
абазначае прабел ці прабельны сімвал:
прабел, перавод радка, табуляцыю. Можна
інвертаваць значэнне каманды, напісаўшы вялікую
літару: напрыклад, калі \d - лічба,
то \D - не лічба.
Прыклад
Давайце знойдзем усе лічбы:
let str = '1 12 123';
let res = str.replace(/\d/g, '!');
У выніку ў зменную запішацца наступнае:
'! !! !!!'
Прыклад
Аператары паўтарэння лічаць каманды-групы
адным цэлым, гэта значыць згрупоўваючыя дужкі
не патрэбныя. У наступным прыкладзе шаблон пошуку
выглядае так: лічба ад 0 да 9
адзін ці больш разоў:
let str = '1 12 123 abc @@@';
let res = str.replace(/\d+/g, '!');
У выніку ў зменную запішацца наступнае:
'! ! ! abc @@@'
Прыклад
У наступным прыкладзе шаблон пошуку выглядае
так: усё што заўгодна адзін ці больш разоў,
але не лічба ад 0 да 9:
let str = '123abc3@@';
let res = str.replace(/\D+/g, '!');
У выніку ў зменную запішацца наступнае:
'123!3!'
Прыклад
У даным прыкладзе шаблон пошуку выглядае так: прабельны сімвал адзін раз:
let str = '1 12 123 abc @@@';
let res = str.replace(/\s/g, '!');
У выніку ў зменную запішацца наступнае:
'1!12!123!abc!@@@'
Прыклад
У даным прыкладзе шаблон пошуку выглядае так:
НЕ прабельны сімвал адзін ці больш разоў.
Усе падрадкі, падзеленыя прабеламі, заменяцца
на '!':
let str = '1 12 123 abc @@@';
let res = str.replace(/\S+/g, '!');
У выніку ў зменную запішацца наступнае:
'! ! ! ! !'
Прыклад
У даным прыкладзе шаблон пошуку выглядае так:
лічба ці літара адзін ці больш разоў.
Усе падрадкі, якія складаюцца з лічбаў і літар,
заменяцца на '!':
let str = '1 12 123a Abc @@@';
let res = str.replace(/\w+/g, '!');
У выніку ў зменную запішацца наступнае:
'! ! ! ! @@@'
Прыклад
У даным прыкладзе шаблон пошуку выглядае так:
НЕ лічба і НЕ літара адзін ці больш разоў.
Па дадзенае вызначэнне ў нашым выпадку трапляе
'@@@' і ўсе прабелы (яны ж таксама
не лічбы і не літары). Звярніце ўвагу на
тое, што ў канцы адзін '!' - у яго
ператварылася радок ' @@@' - з
прабелам наперадзе:
let str = '1 12 123 Abc @@@';
let res = str.replace(/\W+/g, '!');
У выніку ў зменную запішацца наступнае:
'1!12!123!Abc!'
Практычныя задачы
Дадзены радок:
let str = 'a1a a2a a3a a4a a5a aba aca';
Напішыце рэгулярку, якая знойдзе радкі,
у якіх па краях стаяць літары 'a',
а паміж імі адна лічба.
Дадзены радок:
let str = 'a1a a22a a333a a4444a a55555a aba aca';
Напішыце рэгулярку, якая знойдзе радкі,
у якіх па краях стаяць літары 'a',
а паміж імі любая колькасць лічбаў.
Дадзены радок:
let str = 'aa a1a a22a a333a a4444a a55555a aba aca';
Напішыце рэгулярку, якая знойдзе радкі,
у якіх па краях стаяць літары 'a',
а паміж імі любая колькасць лічбаў (у тым
ліку і нуль лічбаў, гэта значыць радок 'aa').
Дадзены радок:
let str = 'avb a1b a2b a3b a4b a5b abb acb';
Напішыце рэгулярку, якая знойдзе радкі
наступнага выгляду: па краях стаяць літары
'a' і 'b', а паміж імі - не
лік і не прабел.
Дадзены радок:
let str = 'ave a#b a2b a$b a4b a5b a-b acb';
Напішыце рэгулярку, якая знойдзе радкі
наступнага выгляду: па краях стаяць літары
'a' і 'b', а паміж імі - не
літара, не лічба і не прабел.
Дадзены радок:
let str = 'ave a#a a2a a$a a4a a5a a-a aca';
Напішыце рэгулярку, якая замяніць усе прабелы
на '!'.