Você usa as classes de caracteres para especificar uma lista de caracteres que correspondem a uma posição na expressão regular. Você define as classes de caracteres com colchetes (
[
e
]
). Por exemplo, a expressão regular a seguir define uma classe de caracteres que corresponde a
bag
,
beg
,
big
,
bog
ou
bug
:
/b[aeiou]g/
Sequências de eliminação nas classes de caracteres
A maioria dos metacaracteres e das metassequências que normalmente tem significados especiais em uma expressão regular
não
tem esses mesmos significados em uma classe de caractere. Por exemplo, em uma expressão regular, o asterisco é usado para repetição, mas esse não é o caso quando o asterisco aparece em uma classe de caracteres. A classe de caracteres a seguir corresponde ao asterisco literalmente, junto com qualquer outro caractere listado:
/[abc*123]/
Entretanto, os três caracteres listados na tabela a seguir funcionam como metacaracteres, com significado especial, nas classes de caracteres:
Metacaractere
|
Significado nas classes de caracteres
|
]
|
Define o final de uma classe de caracteres.
|
-
|
Define um intervalo de caracteres (consulte a próxima seção, “Intervalos de caracteres nas classes de caracteres”).
|
\
|
Define metassequências e elimina o significação especial dos metacaracteres.
|
Para que qualquer um desses caracteres seja reconhecido como caracteres literais (sem o significado do metacaractere especial), você deve precedê-lo com o caractere escape de barra invertida. Por exemplo, a expressão regular a seguir inclui uma classe de caracteres que corresponde a qualquer um dos quatro símbolos (
$
,
\
,
]
ou
-
):
/[$\\\]\-]/
Além dos metacaracteres que mantêm seu significado especial, as metassequências a seguir funcionam como metassequências nas classes de caracteres:
Metassequência
|
Significado nas classes de caracteres
|
\n
|
Corresponde a um caractere de nova linha.
|
\r
|
Corresponde a um caractere de retorno.
|
\t
|
Corresponde a um caractere de tabulação.
|
\u
nnnn
|
Corresponde ao caractere com o valor do ponto de código Unicode especificado (como definido pelo número hexadecimal
nnnn
).
|
\\x
nn
|
Corresponde ao caractere com o valor ASCII especificado (como definido pelo número hexadecimal
nn
).
|
Outros metacaracteres e metassequências de expressões regulares são tratados como caracteres normais em uma classe de caracteres.
Intervalos de caracteres nas classes de caracteres
Use o hífen para especificar um intervalo de caracteres, como
A-Z
,
a-z
ou
0-9
. Esses caracteres devem constituir um intervalo válido no conjunto de caracteres. Por exemplo, a classe de caracteres a seguir corresponde a qualquer um dos caracteres no intervalo de
a-z
ou qualquer dígito:
/[a-z0-9]/
Você também pode usar o código de caractere ASCII
\\x
nn
para especificar um intervalo por valor ASCII. Por exemplo, a classe de caracteres a seguir corresponde a qualquer caractere de um conjunto de caracteres ASCII estendido (como
é
e
ê
):
\\x
Classes de caracteres negadas
Quando você usa um caractere circunflexo (
^
) no início de uma classe de caracteres, ele nega aquela classe — qualquer caractere não listado é considerado uma correspondência. A classe de caracteres a seguir corresponde a qualquer caractere
exceto
a uma letra minúscula (
az
–) ou um dígito:
/[^a-z0-9]/
Você deve digitar o caractere circunflexo (
^
) no
início
de uma classe de caracteres para indicar a negação. Caso contrário, você estará simplesmente adicionando o caractere circunflexo aos caracteres na classe de caracteres. Por exemplo, a classe de caracteres a seguir corresponde a qualquer um dos caracteres de símbolo, incluindo o circunflexo:
/[!.,#+*%$&^]/