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-0105
Linguagem de código: JavaScript ( javascript )
E você quer transformá-lo em um número simples:
14085550105
Linguagem 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 \d
qual corresponde a qualquer dígito único:
\d
Linguagem de código: JavaScript ( javascript )
O exemplo a seguir usa o \d
para 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
).\w
–w
significa 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:
O2
Linguagem de código: JavaScript ( javascript )
Um padrão pode conter caracteres regulares e classes de caracteres. Por exemplo, a ES\d
expressão regular corresponde ES
seguida 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, \D
corresponde 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 \d
com 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 \D
classe 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:
14085550105
Linguagem 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 s
sinalizador:
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
,\s
e\w
. - As classes de caracteres
\d
,\s
, e\w
possuem as classes inversas\D
e\S
que\W
correspondem a outros caracteres, exceto\d
,\s
e\w
. - O ponto(
.
) corresponde a qualquer caractere, exceto o caractere de nova linha. Use os
sinalizador para fazer com que a.
classe de caracteres ponto () corresponda a qualquer caractere, incluindo a nova linha.