Expressão regular: classes de caracteres

Resumo : neste tutorial, você aprenderá sobre classes de caracteres em expressões regulares para corresponder a um conjunto de caracteres, incluindo dígitos, espaços em branco e caracteres de palavras.

Introdução às classes de personagens

Uma classe de caracteres permite combinar qualquer símbolo de um determinado conjunto de caracteres. Uma classe de caracteres também é chamada de conjunto de caracteres. Suponha que você tenha um número de telefone como este:

+1-(408)-555-0105Linguagem de código:  JavaScript  ( javascript )

E você quer transformá-lo em um número simples:

14085550105Linguagem de código:  JavaScript  ( javascript )

As classes de caracteres em expressões regulares podem ajudá-lo a fazer isso.

Vamos explorar primeiro a classe de caracteres de dígitos. A classe de caracteres de dígito é denotada por \dqual corresponde a qualquer dígito único:

\dLinguagem de código:  JavaScript  ( javascript )

O exemplo a seguir usa o \dpara corresponder ao primeiro número do número de telefone:

let phone = '+1-(408)-555-0105';
let re = /\d/;

console.log(phone.match(re));Linguagem de código:  JavaScript  ( javascript )

Saída:

["1"]Linguagem de código:  JavaScript  ( javascript )

Quando você adiciona o sinalizador global ( g), a expressão regular irá procurar por todos os números, não pelo primeiro:

let phone = '+1-(408)-555-0105';
let re = /\d/g;

console.log(phone.match(re));Linguagem de código:  JavaScript  ( javascript )

Saída:

["1", "4", "0", "8", "5", "5", "5", "0", "1", "0", "5"]
Linguagem de código:  JavaScript  ( javascript )

Agora, você pode transformar o número de telefone em um número simples da seguinte maneira:

  • Use o match()método para retornar uma matriz contendo números.
  • Use o join()método para concatenar elementos do array em uma string.

Por exemplo:

let phone = '+1-(408)-555-0105';
let re = /\d/g;

let numbers = phone.match(re);
let phoneNo = numbers.join('');

console.log(phoneNo);
Linguagem de código:  JavaScript  ( javascript )

Saída:

14085550105
Linguagem de código:  JavaScript  ( javascript )

Para resumir, você pode encadear os métodos match()e join()assim:

console.log('+1-(408)-555-0105'.match(/\d/g).join(''));
Linguagem de código:  JavaScript  ( javascript )

Além da classe de caracteres de dígito ( \d), as expressões regulares suportam outras classes de caracteres.

As classes de caracteres mais comumente usadas são:

  • \d– corresponde a um único dígito ou caractere de 0 a 9.
  • \s– corresponde a um único símbolo de espaço em branco, como um espaço, uma tabulação (\t), uma nova linha ( \n).
  • \wwsignifica caractere de palavra. Corresponde ao caractere ASCII, [A-Za-z0-9_]incluindo alfabetos latinos, dígitos e sublinhado ( _)

Na prática, muitas vezes você combina as classes de personagens para formar uma combinação mais poderosa.

Por exemplo \w\d, corresponde a qualquer palavra seguida por um dígito como O2:

let str = 'O2 is oxygen';
let re = /\w\d/g

console.log(str.match(re));Linguagem de código:  JavaScript  ( javascript )

Saída:

O2Linguagem de código:  JavaScript  ( javascript )

Um padrão pode conter caracteres regulares e classes de caracteres. Por exemplo, a ES\dexpressão regular corresponde ESseguida por um dígito como ES6:

let str = 'ES6 Tutorial';
let re = /ES\d/g

console.log(str.match(re));Linguagem de código:  JavaScript  ( javascript )

Saída:

["ES6"]
Linguagem de código:  JavaScript  ( javascript )

Classes Inversas

Uma classe de caracteres possui uma classe inversa com a mesma letra, mas em maiúsculas, por exemplo, \Dé o inverso de \d.

A classe inversa corresponde a todos os outros caracteres. Por exemplo, \Dcorresponde a qualquer caractere, exceto um dígito (ou \d). A seguir estão as classes inversas:

  • \D– corresponde a qualquer caractere, exceto um dígito, por exemplo, uma letra.
  • \S– corresponde a qualquer caractere, exceto um espaço em branco, por exemplo, uma letra
  • \W– corresponde a qualquer caractere, exceto um caractere de palavra, por exemplo, letra não latina ou espaço.

Voltando ao exemplo do número de telefone, você pode usar o \dcom o sinalizador global ( g):

let phone = '+1-(408)-555-0105';
let re = /\d/g;

console.log(phone.match(re).join(''));Linguagem de código:  JavaScript  ( javascript )

Saída:

14085550105
Linguagem de código:  JavaScript  ( javascript )

Ou você pode remover o não dígito usando a \Dclasse inversa e substituir todos os caracteres não dígitos por espaços em branco, assim:

let phone = '+1-(408)-555-0105';
let re = /\D/g;

console.log(phone.replace(re,''));Linguagem de código:  JavaScript  ( javascript )

Saída:

14085550105Linguagem de código:  JavaScript  ( javascript )

A classe de caracteres ponto (.)

O ponto ( .) é uma classe de caracteres especial que corresponde a qualquer caractere, exceto uma nova linha:

let re = /E.6/
console.log('ES6'.match(re)); Linguagem de código:  JavaScript  ( javascript )

Saída:

["ES6", index: 0, input: "ES6", groups: undefined]
Linguagem de código:  JavaScript  ( javascript )

No entanto, o exemplo a seguir retorna null:

let re = /ES.6/
console.log('ES\n6'.match(re));Linguagem de código:  JavaScript  ( javascript )

Se quiser usar a .classe de caracteres ponto ( ) para corresponder a qualquer caractere, incluindo a nova linha, você pode usar o ssinalizador:

let re = /ES.6/s
console.log('ES\n6'.match(re));Linguagem de código:  JavaScript  ( javascript )

Saída:

["ES
6"]Linguagem de código:  PHP  ( php )

Resumo

  • As classes de caracteres correspondem a qualquer símbolo de determinados conjuntos de caracteres, por exemplo, \d, \se \w.
  • As classes de caracteres \d, \s, e \wpossuem as classes inversas \De \Sque \Wcorrespondem a outros caracteres, exceto \d, \se \w.
  • O ponto( .) corresponde a qualquer caractere, exceto o caractere de nova linha. Use o ssinalizador para fazer com que a .classe de caracteres ponto () corresponda a qualquer caractere, incluindo a nova linha.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *