Le classi di caratteri permettono di specificare una serie di caratteri nelle espressioni regolari. Racchiudere le classi di caratteri tra parentesi angolari (
[
e
]
). Ad esempio, la seguente espressione regolare definisce una classe di caratteri che corrisponde a
bag
,
beg
,
big
,
bog
o
bug
:
/b[aeiou]g/
Sequenze di escape nelle classi di caratteri
La maggior parte dei metacaratteri e delle metasequenze che hanno un significato speciale nelle espressioni regolari
non
hanno lo stesso significato all'interno della classe di caratteri. Nelle espressioni regolari, ad esempio, l'asterisco indica una ripetizione, ma questo non vale nelle classi di caratteri. Nella seguente classe di caratteri l'asterisco ha il suo significato letterale, come tutti gli altri caratteri:
/[abc*123]/
Esistono, tuttavia, tre caratteri che le classi di caratteri interpretano come metacaratteri:
Metacarattere
|
Significato nelle classi di caratteri
|
]
|
Definisce la fine della classe di caratteri.
|
-
|
Definisce un intervallo di caratteri (vedete la sezione seguente, “Intervalli di caratteri nelle classi di caratteri”).
|
\
|
Definisce metasequenze e disabilita il significato speciale dei metacaratteri.
|
Per mantenere il significato letterale dei seguenti caratteri, vale a dire per non utilizzarli come metacaratteri, anteponete al carattere la barra rovesciata (il carattere escape). Ad esempio, la seguente espressione regolare comprende una classe di caratteri che corrisponde a uno dei quattro simboli (
$
,
\
,
]
o
-
):
/[$\\\]\-]/
Oltre ai metacaratteri che mantengono il loro significato speciale, le sequenze seguenti fungono da metasequenze nelle classi di caratteri:
Metasequenza
|
Significato nelle classi di caratteri
|
\n
|
Corrisponde al carattere nuova riga.
|
\r
|
Corrisponde al carattere ritorno a capo.
|
\t
|
Corrisponde al carattere tabulazione.
|
\u
nnnn
|
Corrisponde al carattere con il punto di codifica Unicode specificato, come specificato mediante il numero esadecimale
nnnn
.
|
\\x
nn
|
Corrisponde al carattere con il valore ASCII specificato, come specificato mediante il numero esadecimale
nn
.
|
Le altre metasequenze e gli altri metacaratteri delle espressioni regolari vengono trattati come caratteri normali all'interno delle classi di caratteri.
Intervalli di caratteri nelle classi di caratteri
Usate il trattino per specificare un intervallo di caratteri, come
A-Z
,
a-z
o
0-9
. I caratteri devono costituire un intervallo valido. La classe di caratteri dell'esempio seguente corrisponde a qualsiasi carattere dell'intervallo
a-z
o a qualsiasi cifra:
/[a-z0-9]/
In alternativa, potete specificare un intervallo per valore ASCII usando il codice del carattere ASCII
\\x
nn
. La classe di caratteri dell'esempio seguente corrisponde a qualsiasi carattere del set di caratteri estesi ASCII (come
é
e
ê
):
\\x
Negazione delle classi di caratteri
L'uso di un accento circonflesso (
^
) all'inizio di una classe di caratteri nega tale classe, vale a dire che la corrispondenza viene cercata tra qualsiasi carattere ad eccezione di quelli indicati. La seguente classe di caratteri corrisponde a qualsiasi carattere
eccetto
le lettere minuscole (
a–z
) e le cifre:
/[^a-z0-9]/
Per utilizzare l'accento circonflesso (
^
) per indicare una negazione è necessario scriverlo
all'inizio
della classe di caratteri. In caso contrario, l'accento circonflesso mantiene il suo valore letterale e viene aggiunto come normale carattere della classe. La classe di caratteri dell'esempio seguente corrisponde a qualsiasi simbolo, accento circonflesso compreso:
/[!.,#+*%$&^]/