Page 289 - Браун Э. - Изучаем JavaScript. Руководство по созданию современных веб-сайтов - 2017
P. 289
Динамическое создан и е регуля р н ы х выраж н и й
е
В начале этой главы упоминалось, что литеральный синтаксис регулярных выра
жений предпочтительнее конструктора RegExp. Кроме необходимости вводить вчет
веро меньше символов, литералы регулярных выражений предпочтительнее потому,
что в них не нужно экранировать символы обратной косой черты, как это делается
в строках JavaScript. На самом деле конструктор RegExp необходимо использовать,
чтобы создавать регулярные выражения динамически. Например, у вас мог бы быть
массив имен пользователей, которые вы хотите искать в строке; нет никакого разум -
ного способа ввести все эти имена пользователей в литерал регулярного выражения.
Вот где пригодится конструктор RegExp, поскольку он создает регулярное выражение
из строки, которая может быть построена динамически. Давайте рассмотрим пример.
"
const users = [ " mar " , "nick" , " a rthu " , " s am , " y vette " ] ;
y
r
const text = "User @ a rthur started the backup and 1 5 : 1 5 , " +
" a nd @nick and @ y vette restored it at 1 8 : 3 5 . " ;
n
const userRegex = new RegEx ( ' @ ( ? : $ { u sers . j oi ( ' i ' ) } ) \ \b ' , ' g ' ) ;
p
text . m atch (userRegex ) ; / / [ "@arthur", "@nick ", "@yvette" ]
Эквивалентное литеральное регулярное выражение для этого примера было бы та
1
ким: / @ ( ? : m ary nick 1 arthur 1 saml yvette) \Ь/g, но мы сумели создать его динамичес
ки. Обратите внимание на использование двух обратных косых черточек перед Ь (ме
тасимвол границы слова); первая косая черта экранирует вторую косую черту в строке.
Заключ е н и е
Хотя в данной главе затронуты основные моменты регулярных выражений, это сде
лано только поверхностно. Чтобы стать профессионалом в регулярных выражениях
нужно приблизительно 20% времени уделить теории и 80% практике. Пока вы новичок
(и даже когда вы наберетесь опыта!) при изучении материала вам поможет надежный
x
тестер регулярных выражений (такой, как сайт https : / / rege l O l . com/# j a vascript).
Самое важное, что вы должны были уяснить из этой главы, - понимание того, как
обработчик регулярного выражения перерабатывает входные данные; недостаточное
понимание в этой области является причиной большинства проблем.
292 Глава 1 7 . Регулярные выражения

