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 . Регулярные выражения
   284   285   286   287   288   289   290   291   292   293   294