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.
|
\unnnn
|
Dopasowuje znak do określonej wartości kodu Unicode (zdefiniowanej przez liczbę szesnastkową nn).
|
\\xnn
|
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 \\xnn 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:
/[!.,#+*%$&^]/