Alternação Regex

Resumo : neste tutorial, você aprenderá sobre a alternância de regex JavaScript, que é o operador “OR” em expressões regulares.

Introdução à alternância regex

Regex usa o operador pipe ( |) para representar uma alternância, que é como o operador lógico OR em expressões regulares. A alternância permite combinar A ou B:

A | B

O exemplo a seguir usa a alternância para corresponder a JavaScriptou JSna string 'JavaScript and JS':

const s = 'JavaScript and JS';
const pattern = /JavaScript|JS/g;
const match = s.match(pattern);

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

Saída:

[ 'JavaScript', 'JS' ]Linguagem de código:  texto simples  ( texto simples )

Exemplos de alternância Regex

O exemplo a seguir ilustra as aplicações práticas da alternância regex.

1) Usando alternância de regex para corresponder à string de tempo no formato hh:mm

A seguinte expressão regular que combina o \d conjunto de caracteres com os quantificadores {} para corresponder a uma sequência de tempo no formato hh:mm:

/\d{2}:\d{2}/Linguagem de código:  JavaScript  ( javascript )

Nesta expressão regular:

  • \d{2}corresponde a dois dígitos.
  • :corresponde ao caractere de dois pontos
  • \d{2}corresponde a dois dígitos

Mas a regra \d{2}também corresponde a uma hora ou minuto inválido, por exemplo 99. Para que a correspondência seja mais precisa, você pode usar uma alternância.

Como as horas válidas são de 01até 23, você pode usar o seguinte padrão para corresponder à parte da hora:

[01]\d|2[0-3]Linguagem de código:  JavaScript  ( javascript )

Neste padrão:

  • A regra [01]corresponde a um único dígito 0 ou 1 e a regra \dcorresponde a um único dígito de 0 a 9. Portanto, a regra [01]\dcorresponde a 00, 01 a 19
  • O número literal 2corresponde ao dígito 2 e a regra [0-3]corresponde a um único dígito de 0 a 3, incluindo 0, 1, 2, 3. Portanto, a regra 2[0-3]corresponde a dois dígitos 20, 21, 22 e 23.

Portanto, a regra [01]\d|2[0-3]corresponde a dois dígitos de 00 a 23

Da mesma forma, você pode usar a seguinte regra para corresponder a um minuto válido que varia de 00 a 59:

[0-5]\dLinguagem de código:  JavaScript  ( javascript )

A expressão regular a seguir combina essas regras para corresponder a uma sequência de tempo no hh:mmformato:

/[01]\d|2[0-3]:[0-5]\d/gLinguagem de código:  JavaScript  ( javascript )

No entanto, esta expressão regular não funcionará conforme o esperado. Por exemplo:

const time = '05:30 31:62 23:45 26:99';
const pattern = /[01]\d|2[0-3]:[0-5]\d/g;
const match = time.match(pattern);

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

Saída:

[ '05', '23:45' ]Linguagem de código:  JavaScript  ( javascript )

Neste exemplo, o mecanismo regex trata o padrão [01]\d|2[0-3]:[0-5]\dcomo duas partes separadas pela alternância:

[01]\d
OR
2[0-3]):([0-5]\d)Linguagem de código:  Python  ( python )

Para corrigir isso, você usa parênteses para quebrar a alternância. Indica que apenas a parte envolvida é alternada, não todo o padrão:

([01]\d|2[0-3]):[0-5]\dLinguagem de código:  JavaScript  ( javascript )

Agora, o script funciona conforme o esperado:

const time = '05:30 31:62 23:45 26:99';
const pattern = /([01]\d|2[0-3]):[0-5]\d/g;
const match = time.match(pattern);

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

Saída:

[ '05:30', '23:45' ]Linguagem de código:  JavaScript  ( javascript )

Resumo

  • A alternância A | Bcorresponde a Aou B.
  • A alternância é como um operador OR em expressões regulares.
  • Use parênteses ()para envolver as partes que deseja aplicar a alternância.

Deixe um comentário

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