1.4 KiB
1.4 KiB
title | localeTitle |
---|---|
Reuse Patterns Using Capture Groups | Reutilizar padrões usando grupos de captura |
Reutilizar padrões usando o grupo de captura
Sugestão 1:
Dado código abaixo:
let testString = "test test test ";
let reRegex =/(test)\s\1/;
let result = reRegex.test(testString);
result
no test test
porque \1
neste exemplo representa o mesmo texto que o mais recente correspondido pelo primeiro grupo de captura (test)
.
Se fôssemos traduzir literalmente o regex, seria algo como isto:
let re = /(test)\s\1;
let literalRe = /test\stest;
Ambos rea
e literalRe
combinariam com a mesma coisa.
Dica 2:
Dado o código abaixo:
let testString = "test test test ";
let reRegex =/(test)(\s)\1\2\1/;
let result = reRegex.test(testString);
irá coincidir com o test test test
inteiro porque: \1
repetições (teste) \2
repetições (\ s)
Dica 3:
O código abaixo:
let testString = "test test test test test test";
let reRegex =/(test)(\s)\1\2\1/g;
let result = reRegex.test(testString);
porque usamos \g
, nosso Regex não retorna após a primeira correspondência completa ( test test test
) e corresponde a todas as repetições.
Alerta de Spoiler - Solução à frente!
Solução:
let repeatNum = "42 42 42";
let reRegex = /^(\d+)\s\1\s\1$/;
let result = reRegex.test(repeatNum);