Page 270 - Браун Э. - Изучаем JavaScript. Руководство по созданию современных веб-сайтов - 2017
P. 270

r
       По с к с испоnьзован и е м ре уnя р ных выраже н и й
           и
          После создания регулярного выражения его можно использовать для поиска под­
       строки в строке несколькими способами.
          Чтобы понять опции для замены, сначала рассмотрим небольшой пример приме­
       нения метаязыка регулярного выражения (использование статической строки здесь
       было бы очень скучным). Мы используем регулярное выражение / \ w { 3 ,   } / ig, кото­
       рому будут соответствовать все слова из трех или более символов (без учета регис­
       тра). Не волнуйтесь о понимании всего прямо сейчас; это придет далее в этой главе.
       Теперь мы можем рассмотреть доступные нам методы поиска.
       const  input  =  "As  I  was  going  to  Saint  Ives " ;
       const  re  =  / \ w{ З , } /ig;

       / /  начнем  со  строки  (input)
       input . rn atch ( r e ) ;   //  [ " was ",  "going",  "Saint " ,  "Ives "}
       input . s earch ( r e ) ;  //  5  (первое  трехбуквенное  слово  начинается  с  индекса  5)

       //  начнем  с  регулярного  выражения  (re)
                   t
       re . test ( i npu ) ;   / /   true  (input  содержит  по  крайней  мере  одно
                        / /  трехбуквенное  слово)
       re . exec ( inpu ) ;   / /  [ "was "}  (первое  соответствие)
                   t
       re . exec ( inpu ) ;   / /  [ "going" J  (ехес  "помнит" ,   где  он  находится)
                   t
                   t
       re . exec ( i npu ) ;   1 1   [ " Sain t " J
       re . e xec ( input )  ;     1 1   [ " Ives "}
                   t
       re . exec ( inpu ) ;   //  null  -- соответствий  больше  нет
       / /   обратите  внимание,  что  любой  из  этих  методов  применяется
       1 1   непосредственно  с  литералом  регулярного  выражения
       input . rn atch ( / \w { З ,  } /i g ) ;
       input . s earch ( / \w { З , } / ig ) ;
       /\w{ З , } / i g . test ( i npu ) ;
                          t
                          t
       / \ w{ З , } / i g . exec ( inpu ) ;
       1 1
          И з   всех перечисленных выше методов RegExp . prototype . ехес предоставляет
       больше всего информации, но на практике почему-то он используется очень редко.
       Я чаще всего использую String  p rototype . m atch и RegExp . prototype . test.
                                    .
                    и с
                                               r
       Замена с  поnьзова          н и е м    ре уnя р  ных выраж     е н и  й
          Мы уже видели применение метода String . prototype . replace для замены прос­
       тых строк. Однако он также позволяет использовать регулярные выражения и спо­
       собен на гораздо большее! Давайте начнем с простого примера - замены всех слов,
       состоящих из 4-х и более символов.



                                        Поиск с использованием регулярных выражений   273
   265   266   267   268   269   270   271   272   273   274   275