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

Точно так же я часто использую набор  \ S   для проверки того, что в обязательных
       полях ввода есть хоть какие-то данные  (в них должен быть по крайней мере один
       символ, и это не должен быть пробел!).

       const  field   '  something  ' ;
       const  valid  =  / \ S / . test ( field) ;


       Повторе н и е

          Повторение (repetition) метасимволов позволяет задать количество повторов не­
       ких соответствий. Рассмотрим предыдущий  пример, в  котором мы распознавали
       одиночные цифры. Что если вместо этого мы должны распознавать числа (которые
       могут состоять из нескольких расположенных рядом цифр)? Мы могли бы использо­
       вать то, что уже знаем, и сделать так.
       const  match   =  beer99 . m atch ( / [ 0 - 9 ]   [ 0 - 9 ]   [ 0 - 9 ]   1  [ 0 - 9 ]   [ 0 - 9 ]   1  [ 0 - 9 ] / ) ;

          Обратите внимание, что  здесь  снова необходимо распознавать более  специфи­
       ческие строки (трехзначные числа) прежде, чем менее специфические (двузначные
       числа).  Это регулярное выражение будет работать для одно-, двух- и трехзначных
       чисел, но, можно распознавать и четырехзначные числа, просто добавив новый ша­
       блон в начало нашего чередования. К счастью, есть лучший путь.

       const  match  =  beer99 . m atc ( /  [ 0 - 9 ] + / ) ;
                               h
          Обратите внимание на знак + после символьной группы: он указывает, что преды­
       дущий элемент должен соответствовать один или несколько раз. Фраза "Предыдущий
       элемент" зачастую сбивает новичков с толку. Метасимволы повторения - это моди­
       фикаторы (modifier), которые модифицируют то, что расположено перед ними. Они
       ничего не делают самостоятельно и не могут этого делать по определению! Есть пять
       модификаторов повторения.

        Моди-   Описание            Пример
        ф икатор
        { n }    Точно n  р аз      / d { 5 } / соответствует только пятизначным числам (на­
                                    пример, почтовым индексам)
        { n , }   По крайней мере n раз  / \ d {   5 , } / соответствует только числам с пятью и более
                                    цифрами
        { n ,  rn }    По крайней мере n, но  / \d { 2 ,   5 }   / соответствует только числам, состоящим
                не более rn раз     по крайней мере из двух, но не больше пяти цифр
        ?       Ноль или один раз.   /  a - z   J \d? / i соответствует буквам англ и йского алфави­
                                     [
                Эквивалент  {  ,   1 }   та, за которыми может следовать (а может и нет!) одна
                           О
                                    цифра




       280     Глава 1 7 . Регулярные выражения
   272   273   274   275   276   277   278   279   280   281   282