Увядзенне ў рэгулярныя выразы ў 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'
.