Классы символов используются для установления списка символов и их соответствий определенной позиции в регулярном выражении. Классы символов определяются с помощью квадратных скобок (
[
и
]
). Например, следующее регулярное выражение определяет класс символов, соответствующий
bag
,
beg
,
big
,
bog
или
bug
:
/b[aeiou]g/
Переход последовательностей в классах символов
Большинство метасимволов и метапоследовательностей, обычно имеющих в регулярном выражении особое значение,
не
сохраняют это значение внутри класса символов. Например, звездочка используется в регулярном выражении для обозначения повторения, но это не так, когда звездочка появляется в классе символов. Следующий класс символов буквально соответствует звездочке наряду с любым из перечисленных символов:
/[abc*123]/
Однако три символа, приведенные в следующей таблице, действительно функционируют как метасимволы, сохраняя в классах символов особое значение.
Метасимвол
|
Значение в классах символов
|
]
|
Определяет конец класса символов.
|
-
|
Определяет диапазон символов (см. следующий раздел «Диапазоны символов в классах символов»).
|
\
|
Определяет метапоследовательности и отменяет особое значение метасимволов.
|
Чтобы каждый из этих символов распознавался как символ литерала (без особого значения метасимвола), необходимо поставить перед этим символом символ перехода обратной косой черты. Например, следующее регулярное выражение включает класс символов, соответствующий любому из четырех символов (
$
,
\
,
]
или
-
):
/[$\\\]\-]/
Помимо метасимволов, сохраняющих свое особое значение, следующие метапоследовательности функционируют как метапоследовательности внутри классов символов:
Метапоследовательность
|
Значение в классах символов
|
\n
|
Соответствует символу начала строки.
|
\r
|
Соответствует символу возврата.
|
\t
|
Соответствует символу табуляции.
|
\u
nnnn
|
Соответствует символу с заданным значением точки кода юникод (определенным шестнадцатеричным числом
nnnn
).
|
\\x
nn
|
Соответствует символу с заданным значением ASCII (определенным шестнадцатеричным числом
nn
).
|
Другие метапоследовательности и метасимволы регулярных выражений рассматриваются внутри класса символов как обычные символы.
Диапазоны символов в классах символов
Дефис используется для определения диапазона символов, как например
A-Z
,
a-z
или
0-9
. Эти символы должны составлять допустимый диапазон в наборе символов. Например, следующий класс символов соответствует любому из символов диапазона
a-z
или любой цифре:
/[a-z0-9]/
Для определения диапазона значения ASCII можно также использовать код символа ASCII
\\x
nn
. Например, следующий класс символов соответствует любому символу из набора расширенных символов ASCII (таких как
é
и
ê
):
\\x
Классы символов с отрицанием
При использовании в начале класса символов символа (
^
) вставки он отрицает этот класс — любой неперечисленный символ рассматривается как совпадение. Следующий класс символов соответствует любому символу,
за исключением
буквы нижнего регистра (
az
–) или цифры:
/[^a-z0-9]/
Для обозначения отрицания необходимо поставить символ (
^
) вставки в
начале
класса символов. Иначе символ вставки просто добавляется к символам в классе символов. Например, следующий класс символов соответствует любому из числа символов, включая символ вставки:
/[!.,#+*%$&^]/