Отдельные символы литералов могут объединяться в классы символов путем по_ мещения их в квадратные скобки. Класс символов соответствует любому симво_ лу, содержащемуся в этом классе. Следовательно, регулярное выражение /[abc]/ соответствует одному из символов a, b или c. Могут также определяться классы
1 Из числа знаков препинания. – Примеч. науч. ред.
11.1. Определение регулярных выражений
символов с отрицанием, соответствующие любому символу, кроме тех, которые указаны в скобках. Класс символов с отрицанием задается символом ^ в качестве первого символа, следующего за левой скобкой. Регулярное выражение /[^abc]/ соответствует любому символу, отличному от a, b или c. В классах символов диа_ пазон символов может задаваться при помощи дефиса. Поиск всех символов ла_ тинского алфавита в нижнем регистре осуществляется посредством выражения /[a_z]/, а любую букву или цифру из набора символов Latin можно найти при по_ мощи выражения /[a_zA_Z0_9]/.
Некоторые классы символов используются особенно часто, поэтому синтаксис ре_ гулярных выражений в JavaScript включает специальные символы и управляю_ щие (escape) последовательности для их обозначения. Так, \s соответствует симво_ лам пробела, табуляции и любым пробельным (whitespaces) символам_разделите_ лям из набора Unicode, а \S – любым символам, не являющимся символами_разде_ лителями из набора Unicode. В табл. 11.2 приводится перечень этих спецсимволов и синтаксиса классов символов. (Обратите внимание: некоторые из управляю_ щих последовательностей классов символов соответствуют только ASCII_симво_ лам и не расширены для работы с Unicode_символами. Можно явно определить собственные классы Unicode_символов, например, выражение /[\u0400_\04FF]/ соответствует любому символу кириллицы.)
Таблица 11.2. Классы символов регулярных выражений