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

И м енов н н ы е   наборы символов
                  а
          Некоторые  наборы  символов  настолько  распространены  (и  настолько  полезны),
       что для них есть удобные сокращения.

        Именованный      Эквивалент   Примечание
        набор символов
        \d               ( 0 - 9 ]
        \D               ( л Q - 9 ]
                               n
        \s               ( \ t \ v\ \ r ]    Включает символы табуляции, пробела и вертикальной
                                      табуляции
        \S               [ л \ t \ v\n\r ]
        \w               [ a - z A-Z  ]   Обратите внимание, что черточки и точки сюда не вхо­
                                      дят, что делает этот набор неподходящим для распоз­
                                      навания классов CSS и имен доменов
        \W


          Чаще  всех  из  этих  сокращений,  вероятно,  используется  набор  пробельных сим -
       волов ( \ s). Например,  пробелы часто  используется  для  выравнивания  кода,  поэтому
       в  процессе его  анализа  программным  способом, вам,  вероятно, понадобиться  учиты­
       вать любое возможное количество  пробельных  символов.

       const  stuff  =
           ' h ight :   9 \ n '   +
           ' m edium:   5\n'  +
           ' l ow :    2 \ n ' ;
       const  levels   s t uff . m atch ( /  : \ s * [ 0 - 9 ) /g) ;
          (Символ *  после \ s   означает "любое количество пробелов'; о чем мы узнаем вскоре.)
          Не  упускайте  ценность  инвертированных символьных классов ( \ D,  \S  и  \W); они
       представляют  отличный  способ  избавления  от  нежелательного  хлама.  Например,
       прекрасная  идея  нормализовать  номера  телефонов  перед  их  сохранением  в  базе
       данных.  При  вводе  номеров  телефона  для  их читаемости  люди  могут пользоваться
       разными  разделителями:  черточками, точками, круглыми скобками и  пробелами. Но
       для  поиска,  использования  в  качестве  ключей  и  идентификации  было  бы  хорошо,
       если  бы  номера  телефонов  состояли  только  из  десяти  цифр  (или  больше,  если  мы
       говорим  о  международных  номерах  телефона).  При  использовании  набора  \ D  ( т.е.
       все что  не  цифры)  это  сделать  очень  просто.

       const  messyPhone  =  '  ( 5 0 5 )    5 5 5 - 1 5 1 5 ' ;
                                          (
       const  neatPhone  =  mes s yPhone . replace  / \ D/ g,  '  ' )  ;






                                                    Именованные наборы символов   279
   271   272   273   274   275   276   277   278   279   280   281