Resumo : neste tutorial, você aprenderá sobre conjuntos e intervalos em expressões regulares.
Conjuntos
Os colchetes procuram qualquer caractere em um conjunto. Por exemplo, [aeiou]
corresponde a qualquer um dos cinco caracteres : 'a'
, 'e'
, e . O é chamado de conjunto.'i'
'o'
'u'
[...]
Por exemplo, a expressão regular /[cbr]ats/g
corresponde a cats
, bats
e rats
:
let str = 'How cats, rats, and bats became Halloween animals';
let re = /[cbr]ats/g;
let results = str.match(re);
console.log(results);
Linguagem de código: JavaScript ( javascript )
Saída:
["cats", "rats", "bats"]
Linguagem de código: JavaScript ( javascript )
Gamas
Os colchetes podem conter intervalos de caracteres. Por exemplo, [a-z]
é um intervalo de caracteres de a
até z
. E [0-9]
é um dígito de 0 a 9.
O [a-zA-Z0-9_]
é o mesmo que \w
. O [0-9]
é o mesmo que \d
.
Excluindo intervalos
Para negar um intervalo, você usa o intervalo de exclusão como: [^...]
.
Por exemplo, [^0-9]
corresponde a qualquer caractere, exceto um dígito. É o mesmo que \D
.
Ou corresponde a qualquer caractere , [^aeiou]
exceto 'a'
, 'e'
, e .'i'
'o'
'u'
Fuja de caracteres especiais
Normalmente, você usa uma barra invertida para escapar de um caractere especial, por exemplo, \.
. No entanto, entre colchetes, você não precisa escapar da maioria dos caracteres especiais, exceto que eles têm um significado para os colchetes.
Por exemplo, se o sinal de intercalação ( ^
) estiver no início de uma string, você precisará escapar dele:
[\^#$]
Linguagem de código: JavaScript ( javascript )
Se o cursor não estiver no início de uma string ( ^
), você não precisa escapar:
[#^$]
Linguagem de código: JavaScript ( javascript )
A bandeirau
Se um conjunto tiver um par substituto, você precisará adicionar o sinalizador u
à expressão regular para que funcione corretamente:
let result = 'It is 🍎'.match(/[🍎🍅🍓]/);
console.log(result);
Linguagem de código: JavaScript ( javascript )
Saída:
["�"]
Linguagem de código: JavaScript ( javascript )
Neste exemplo, [🍎🍅🍓] tem seis caracteres, não três:
let str = '🍎🍅🍓';
for(let i=0; i<str.length; i++) {
console.log(str.charCodeAt(i));
}
Linguagem de código: JavaScript ( javascript )
Saída:
55356
57166
55356
57157
55356
57171
Linguagem de código: JavaScript ( javascript )
Se você adicionar o sinalizador u
, o comportamento estará correto:
let result = 'It is 🍎'.match(/[🍎🍅🍓]/u);
console.log(result);
Linguagem de código: JavaScript ( javascript )
Saída:
["🍎"]
Linguagem de código: JavaScript ( javascript )
Resumo
- Use
[...]
para construir um conjunto para corresponder a qualquer caractere nele. - Use o
-
interior de um conjunto para construir um intervalo que corresponda a qualquer caractere do intervalo. - Use o
^
para negar um intervalo.