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

можно избавиться от анонимной функции и использовать sanitizeATag непосред­
       ственно.
                                         i
       html . r eplace ( / <a  . * ? < \ / a>/ig,  sanit z e ATag)  ;
          Надеемся, что мощь этих функциональных возможностей очевидна. Всякий раз,
       сталкиваясь с задачей, подразумевающей распознавание малых строк в  пределах
       большей строки и обработку меньших строк, помните, что можно передать функцию
       в String . prototype . replace!


       При в язка

          Очень часто приходится учитывать вещи, которые должны происходить в начале
       или конце строки, а также во всей строке сразу, а не в ее части. Здесь нам пригодятся
       якоря (anchor). Есть два якоря:  л,  который соответствует началу строки,  $ , который
                                                                        и
       соответствует концу строки.
       const  input  =  " I t  was  the  best  of  t i m s ,   it  was  the  worst  of  t i m s " ;
                                           e
                                                                     e
       const  beginning   =  input . m atch ( / л \ wt/g) ;   1 1   "It "
       const  end  =  input . m atch ( / \ w+$ / g ) ;   1 1   "times "
       const  everything  =  input . m atch ( / л . * $ / g ) ;   1 1   то  же ,  что  и  на  входе
       const  nomatchl   input . m atch ( / лbest/i ) ;
                                           g
       const  nomatch2   =  input . m atch ( / worst$/i ) ;
                                            g
          У якорей есть еще один  нюанс, о  котором следует знать. Обычно они  соответ­
       ствуют началу и  концу всей строки, даже если в  ней есть символы новой строки.
       Если вы хотите обработать строку как многострочную (разделенную символами но­
       вой строки), используйте параметр m (multiline).
       const  input   =  "One  line\nTwo  l i n es \nThree  l i nes \nFour" ;
                                            g
                                                      e
       const  beginnings  =  input . m atch ( / л \ w+/m ) ;  /  /    [ " On " ,  " T wo ",  " T hree",  "Four"J
       const  endings  =  input . m atch ( / \w $ / m ) ;   //  [ " li e " ,   "lines " ,   "lines " ,   "Four"J
                                     +
                                                      n
                                         g
       Распозна в а н и е   гран и ц   сn ов
          Одним из малоиспользуемых, но полезных элементов регулярных выражений, яв­
       ляются границы слова. Подобно якорям начала и конца строки, метасимвол грани­
       цы слова \Ь и его инверсия \В не перерабатывает входные данньtе. Это может быть
       очень удобным свойством, как мы вскоре убедимся.
          Г р аница слова определяется местом, где метасимволу \w предшествует или следу­
       ет после него метасимвол \W (не слово) либо символ начала или конца строки. Пред­
       положим, что вы пытаетесь заменить адреса электронной почты в английском тексте
       гиперссылками (в этом примере мы подразумеваем, что адреса электронной почты
       начинаются с символа и заканчиваются символом). Обсудим ситуации, которые сто­
       ит рассмотреть.


                                                                    П р ивязка   289
   281   282   283   284   285   286   287   288   289   290   291