Отдельные символы литералов могут объединяться в классы символов путем помещения их в квадратные скобки. Класс символов соответствует любому символу, содержащемуся в этом классе. Следовательно, регулярное выражение /[abc]/
соответствует одному из символов а, b
или с
. Могут также определяться классы символов с отрицанием, соответствующие любому символу, кроме тех, которые указаны в скобках. Класс символов с отрицанием задается символом ~
в качестве первого символа, следующего за левой скобкой. Регулярное выражение /[~abc]/
соответствует любому символу, отличному от а
, b
или с
. В классах символов диапазон символов может задаваться при помощи дефиса. Поиск всех символов латинского алфавита в нижнем регистре осуществляется посредством выражения /[a-z]/
, а любую букву или цифру из набора символов Latin можно найти при помощи выражения /[a-zA-Z0-9]/
.
Некоторые классы символов используются особенно часто, поэтому синтаксис регулярных выражений в JavaScript включает специальные символы и управляющие (escape) последовательности для их обозначения. Так, \s
соответствует символам пробела, табуляции и любым пробельным символам из набора Unicode, a \S
-любым символам, не являющимся пробельными символами из набора Unicode. В табл. 10.2 приводится перечень этих спецсимволов и синтаксиса классов символов. (Обратите внимание, что некоторые из управляющих последовательностей классов символов соответствуют только ASCII-символам и не расширены для работы с Unicode-символами. Можно явно определить собственные классы Unicode-символов, например, выражение /[\u0400-\04FF]/
соответствует любому символу кириллицы.)

Обратите внимание, что управляющие последовательности специальных символов классов могут находиться в квадратных скобках. \s
соответствует любому пробельному символу, a \d
соответствует любой цифре, следовательно, /[\s\d]/
соответствует любому пробельному символу или цифре. Обратите внимание на особый случай. Как мы увидим позже, последовательность \b
имеет особый смысл. Однако когда она используется в классе символов, то обозначает символ «забой». Поэтому, чтобы обозначить символ «забой» в регулярном выражении буквально, используйте класс символов с одним элементом: /[\b]/
.
Имея знания синтаксиса регулярных выражений, полученные к настоящему моменту, мы можем описать число из двух цифр как /\d\d/
или из четырех цифр как /\d\d\d\d/
, но не сможем, например, описать число, состоящее из любого количества цифр, или строку из трех букв, за которыми следует необязательная цифра. Эти более сложные шаблоны используют синтаксис регулярных выражений, указывающий, сколько раз может повторяться данный элемент регулярного выражения.
Символы, обозначающие повторение, всегда следуют за шаблоном, к которому они применяются. Некоторые виды повторений используются довольно часто, и для обозначения этих случаев имеются специальные символы. Например, +
соответствует одному или нескольким экземплярам предыдущего шаблона. В табл. 10.3 приведена сводка синтаксиса повторений.

Следующие строки демонстрируют несколько примеров:
/\d{2,4}/ // Соответствует числу, содержащему от двух до четырех цифр
/\w{3}\d?/ // Соответствует в точности трем символам слова
// и одной необязательной цифре
/\s+java\s+/ // Соответствует слову "java" с одним или более пробелами
// до и после него
/[~(]*/ // Соответствует нулю или более символам, отличным от открывающей круглой
// скобки
Будьте внимательны при использовании символов повторения *
и ?
. Они могут соответствовать отсутствию указанного перед ними шаблона и, следовательно, отсутствию символов. Например, регулярному выражению /а*/
соответствует строка « bbbb
», поскольку в ней нет символа а
!
Читать дальше
Конец ознакомительного отрывка
Купить книгу