Klasy znaku służą do określania listy znaków do dopasowania jednego położenia w wyrażeniu regularnym. Klasy znaku definiowane są w nawiasach kwadratowych (
[
i
]
). Na przykład: następujące wyrażenie regularne definiuje klasę znaku, która dopasowuje
bag
,
beg
,
big
,
bog
lub
bug
:
/b[aeiou]g/
Sekwencje zmiany znaczenia w klasach znaku
Większość metaznaków i metasekwencji, które maja zazwyczaj specjalne znaczenia w wyrażeniu regularnym,
nie
ma tych samych znaczeń wewnątrz klasy znaku. Na przykład: gwiazdka w wyrażeniu regularnym używana jest dla powtórzeń, ale nie ma takiego samego znaczenia w momencie wystąpienia w klasie znaku. Poniższa klasa znaku dopasowuje gwiazdkę dosłownie razem z innymi, wymienionymi znakami:
/[abc*123]/
Jednak wymienione poniżej trzy znaki funkcjonują jako metaznaki o znaczeniu specjalnym w klasach znaku:
Metaznak
|
Znaczenie w klasach znaku
|
]
|
Definiuje koniec klasy znaku.
|
-
|
Definiuje zakres znaków (patrz następna sekcja, „Zakresy znaków w klasach znaku”).
|
\
|
Definiuje metasekwencję i cofa znaczenie specjalne metaznaku
|
Aby każdy z tych znaków został rozpoznany dosłownie jako znak (bez specjalnego znaczenia metaznaku), należy poprzedzić go znakiem zmiany znaczenia — ukośnikiem odwrotnym. Na przykład: następujące wyrażenie regularne zawiera klasę znaku, która dopasowuje dowolny z czterech symboli (
$
,
\
,
]
, lub
-
):
/[$\\\]\-]/
Poza metaznakami, które zachowują swoje znaczenie specjalne, w klasach znaku jako metasekwencje funkcjonują:
Metasekwencja
|
Znaczenie w klasach znaku
|
\n
|
Dopasowuje znak nowego wiersza.
|
\r
|
Dopasowuje znak powrotu karetki.
|
\t
|
Dopasowuje znak tabulacji.
|
\u
nnnn
|
Dopasowuje znak do określonej wartości kodu Unicode (zdefiniowanej przez liczbę szesnastkową
nn
).
|
\\x
nn
|
Dopasowuje znak do określonej wartości ASCII (zdefiniowanej przez liczbę szesnastkową
nn
)
|
Pozostałe metasekwencje wyrażeń regularnych i metaznaków w klasie znaku traktowane są tak, jak normalne znaki.
Zakresy znaków w klasach znaku
Do określania zakresu znaków (np.
A-Z
,
a-z
lub
0-9
) służy łącznik. Znaki te muszą stanowić poprawny zakres w zestawie znaków. Na przykład: poniższa klasa znaku dopasowuje dowolny znak z zakresu
a-z
lub dowolną cyfrę:
/[a-z0-9]/
Można również użyć kodu znaku ASCII
\\x
nn
w celu określenia zakresu przez wartość ASCII. Na przykład: poniższa klasa znaku dopasowuje dowolny znak z rozszerzonego zestawu znaków ASCII (np.
é
i
ê
):
\\x
Zanegowane klasy znaku
Użycie znaku daszka (
^
) na początku klasy znaku powoduje zanegowanie tej klasy — dopasowany zostanie dowolny niewymieniony w klasie znak. Poniższa klasa znaku dopasowuje dowolny znak
poza
małymi literami (
az
–) i cyfrą:
/[^a-z0-9]/
Aby wskazać negację, należy wpisać znak daszka (
^
) na
początku
klasy znaku. W innym wypadku znak daszka zostanie po prostu dodany do znaków klasy znaku. Na przykład poniższa klasa znaku dopasowuje dowolny ze znaków symboli, łącznie z daszkiem:
/[!.,#+*%$&^]/