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 JavaScript
ou JS
na 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 01
até 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\d
corresponde a um único dígito de 0 a 9. Portanto, a regra[01]\d
corresponde a 00, 01 a 19 - O número literal
2
corresponde 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 regra2[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]\d
Linguagem de código: JavaScript ( javascript )
A expressão regular a seguir combina essas regras para corresponder a uma sequência de tempo no hh:mm
formato:
/[01]\d|2[0-3]:[0-5]\d/g
Linguagem 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]\d
como 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]\d
Linguagem 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 | B
corresponde aA
ouB
. - A alternância é como um operador OR em expressões regulares.
- Use parênteses
()
para envolver as partes que deseja aplicar a alternância.