O que são Character Classes e quais são alguns exemplos comuns?

Vamos aprender sobre classes de caracteres em expressões regulares, incluindo alguns exemplos comuns. Classes de caracteres são uma sintaxe especial que você pode usar para corresponder a conjuntos ou subconjuntos de caracteres. A primeira classe de caracteres que você deve aprender é a classe curinga. O curinga é representado por um ponto (.) e corresponde a qualquer caractere único exceto quebras de linha. Para permitir que a classe curinga corresponda a quebras de linha, lembre-se de que você precisaria usar a flag s. Uma expressão regular que corresponda à letra a seguida por um único caractere pode ser assim:
const regex = /a./;
Isso pode ser útil quando você está procurando por padrões específicos em uma string, mas não sabe o que pode estar entre esses dois padrões. Mas você também pode usar classes de caracteres para restringir suas correspondências. Por exemplo, e se você quisesse corresponder a um caractere numérico? Você pode ter que escrever todos os dígitos possíveis, separando-os com o operador or (|):
const regex = /0|1|2|3|4|5|6|7|8|9/;
Uma classe de caractere existe para esse padrão exato e oferece uma sintaxe abreviada para escrever a mesma coisa. Neste caso, a classe de caractere é escrita como uma barra invertida (\) seguida por um caractere d:
const regex = /\d/;
Esta expressão regular corresponderá ao mesmo padrão exato da nossa expressão anterior: um único caractere numérico em qualquer lugar da string. Agora considere uma expressão regular que também precisa corresponder a qualquer caractere de letra de a até z. Você poderia escrever cada caractere individual separado pelo operador or. Ou você poderia usar outra classe de caractere. A classe \w, que é uma barra invertida seguida de um w, representa qualquer caractere de palavra:
const regex = /\w/;
Um caractere de palavra é definido como qualquer letra, de a a z, ou um número de 0 a 9 e o caractere underscore (_). A inclusão do underscore pode parecer estranha, mas considere as convenções de nomenclatura para variáveis – nomes de variáveis frequentemente podem incluir underscores, então \w foi projetado para corresponder a isso também. Há mais uma classe de caractere especial a considerar: a classe de espaço em branco \s, representada por uma barra invertida seguida de um s. Esta classe de caractere corresponderá a qualquer espaço em branco, incluindo novas linhas, espaços, tabulações e caracteres especiais de espaço unicode. Essas classes de caracteres especiais podem ser negadas. Para negar uma dessas classes de caracteres, em vez de usar uma letra minúscula após a barra invertida, use o equivalente em maiúscula:
const regex = /\D/;
Esta expressão regular, por exemplo, não corresponde a um caractere numérico. Em vez disso, ele corresponde a qualquer caractere único que não seja um caractere numérico. Negar a classe \w corresponderia a qualquer caractere que não seja a a z, 0 a 9 ou um sublinhado e negar a classe de caracteres \s corresponderia a qualquer caractere que não seja um espaço em branco. Mas e se você quiser corresponder a subconjuntos mais específicos de caracteres? Talvez você seja um professor corrigindo provas e precise garantir que suas notas sejam válidas. Uma nota válida pode ser A, B, C, D ou F. Você pode usar colchetes para construir sua própria classe de caracteres:
const regex = /[abcdf]/;
Esta expressão regular irá corresponder a um único caractere que está na lista a, b, c, d ou f. Que tal verificar apenas as notas que passam? Uma nota de aprovação seria um A, B, C ou D. Você pode modificar sua classe de caracteres para parar de corresponder a f removendo esse caractere da lista:
const regex = /[abcd]/;
Você pode ter notado agora que nossa classe de caracteres consiste apenas em caracteres consecutivos. a, b, c e d estão todos diretamente próximos uns dos outros no alfabeto. Para números, caracteres consecutivos podem ser 4, 5 e 6. Quando você tem caracteres consecutivos, pode criar um intervalo usando o caractere hífen. Usando um intervalo, podemos transformar nossa expressão regular em uma sintaxe mais curta enquanto correspondemos ao mesmo padrão exato.
const regex = /[a-d]/;
Lembre-se de que expressões regulares são sensíveis a maiúsculas e minúsculas por padrão. Isso significa que nossa classe de caracteres corresponderá apenas às variantes minúsculas de a, b, c e d. Você pode usar a flag i para conseguir isso, mas também pode incorporá-la diretamente na sua classe de caracteres incluindo as variantes maiúsculas:
const regex = /[a-zA-Z]/;
Você também pode misturar dígitos e números na sua classe de caracteres. Por exemplo, se você quiser o comportamento da classe \w sem o underscore, você pode construir o seu próprio:
const regex = /[a-zA-Z0-9]/;
Observe que se você quiser que sua classe de caracteres corresponda a um hífen literal, você precisa colocar um hífen no início ou no final da classe:
const regex = /[-a-zA-Z0-9]/;
E finalmente, você pode incluir classes de caracteres especiais na sua classe personalizada. Talvez você queira incluir um hífen no conjunto correspondido por \w:
const regex = /[-\w]/;
Classes de caracteres são uma ferramenta poderosa que oferece controle incrível sobre a correspondência de padrões.
Este módulo não possui perguntas. Marque como concluído.