--- id: 587d7dba367417b2b2512ba9 title: Positive and Negative Lookahead challengeType: 1 videoUrl: '' localeTitle: 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
```yml tests: - text: Seu regex deve usar dois positivos lookaheads . testString: 'assert(pwRegex.source.match(/\(\?=.*?\)\(\?=.*?\)/) !== null, "Your regex should use two positive lookaheads.");' - text: Seu regex não deve corresponder a "astronaut" testString: 'assert(!pwRegex.test("astronaut"), "Your regex should not match "astronaut"");' - text: Seu regex não deve corresponder a "airplanes" testString: 'assert(!pwRegex.test("airplanes"), "Your regex should not match "airplanes"");' - text: Seu regex não deve coincidir com "banan1" testString: 'assert(!pwRegex.test("banan1"), "Your regex should not match "banan1"");' - text: Seu regex deve coincidir com "bana12" testString: 'assert(pwRegex.test("bana12"), "Your regex should match "bana12"");' - text: Seu regex deve coincidir com "abc123" testString: 'assert(pwRegex.test("abc123"), "Your regex should match "abc123"");' - text: Seu regex não deve corresponder a "123" testString: 'assert(!pwRegex.test("123"), "Your regex should not match "123"");' - text: Seu regex não deve corresponder a "1234" testString: 'assert(!pwRegex.test("1234"), "Your regex should not match "1234"");' ```
## Challenge Seed
```js let sampleWord = "astronaut"; let pwRegex = /change/; // Change this line let result = pwRegex.test(sampleWord); ```
## Solution
```js // solution required ```