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