freeCodeCamp/curriculum/challenges/portuguese/02-javascript-algorithms-an.../regular-expressions/positive-and-negative-looka...

3.8 KiB

id title challengeType videoUrl localeTitle
587d7dba367417b2b2512ba9 Positive and Negative Lookahead 1 Lookahead positivo e negativo

Description

Lookaheads são padrões que dizem ao JavaScript para olhar em frente na sua string para verificar padrões mais adiante. Isso pode ser útil quando você deseja pesquisar vários padrões na mesma sequência. Existem dois tipos de lookaheads : positive lookahead e negative lookahead . Uma positive lookahead procurará garantir que o elemento no padrão de pesquisa esteja presente, mas não corresponderá a ele. Um lookahead positivo é usado como (?=...) onde o ... é a parte requerida que não é correspondida. Por outro lado, um negative lookahead procurará garantir que o elemento no padrão de pesquisa não esteja lá. Um lookahead negativo é usado como (?!...) onde o ... é o padrão que você não deseja estar lá. O restante do padrão será retornado se a parte lookahead negativa não estiver presente. Lookaheads são um pouco confusos, mas alguns exemplos vão ajudar.
let quit = "qu";
deixe noquit = "qt";
deixe quRegex = / q (? = u) /;
deixe qRegex = / q (?! u) /;
quit.match (quRegex); // Retorna ["q"]
noquit.match (qRegex); // Retorna ["q"]
Um uso mais prático de lookaheads é verificar dois ou mais padrões em uma string. Aqui está um verificador de senha (ingenuamente) simples que procura entre 3 e 6 caracteres e pelo menos um número:
let password = "abc123";
vamos checkPass = / (? = \ w {3,6}) (? = \ D * \ d) /;
checkPass.test (senha); // Retorna true

Instructions

Use lookaheads no pwRegex para corresponder senhas com mais de 5 caracteres e dois dígitos consecutivos.

Tests

tests:
  - text: Seu regex deve usar dois positivos <code>lookaheads</code> .
    testString: 'assert(pwRegex.source.match(/\(\?=.*?\)\(\?=.*?\)/) !== null, "Your regex should use two positive <code>lookaheads</code>.");'
  - text: Seu regex não deve corresponder a <code>&quot;astronaut&quot;</code>
    testString: 'assert(!pwRegex.test("astronaut"), "Your regex should not match <code>"astronaut"</code>");'
  - text: Seu regex não deve corresponder a <code>&quot;airplanes&quot;</code>
    testString: 'assert(!pwRegex.test("airplanes"), "Your regex should not match <code>"airplanes"</code>");'
  - text: Seu regex não deve coincidir com <code>&quot;banan1&quot;</code>
    testString: 'assert(!pwRegex.test("banan1"), "Your regex should not match <code>"banan1"</code>");'
  - text: Seu regex deve coincidir com <code>&quot;bana12&quot;</code>
    testString: 'assert(pwRegex.test("bana12"), "Your regex should match <code>"bana12"</code>");'
  - text: Seu regex deve coincidir com <code>&quot;abc123&quot;</code>
    testString: 'assert(pwRegex.test("abc123"), "Your regex should match <code>"abc123"</code>");'
  - text: Seu regex não deve corresponder a <code>&quot;123&quot;</code>
    testString: 'assert(!pwRegex.test("123"), "Your regex should not match <code>"123"</code>");'
  - text: Seu regex não deve corresponder a <code>&quot;1234&quot;</code>
    testString: 'assert(!pwRegex.test("1234"), "Your regex should not match <code>"1234"</code>");'

Challenge Seed

let sampleWord = "astronaut";
let pwRegex = /change/; // Change this line
let result = pwRegex.test(sampleWord);

Solution

// solution required