--- id: 587d7dba367417b2b2512ba9 title: Positive and Negative Lookahead challengeType: 1 videoUrl: '' localeTitle: Lookahead positivo y negativo --- ## Description
Lookaheads son patrones que le dicen a JavaScript que mire hacia adelante en tu cadena para buscar patrones más adelante. Esto puede ser útil cuando desea buscar múltiples patrones sobre la misma cadena. Hay dos tipos de lookaheads : positive lookahead y negative lookahead . Un positive lookahead mirará para asegurarse de que el elemento en el patrón de búsqueda esté allí, pero en realidad no lo coincidirá. Un lookahead positivo se usa como (?=...) donde ... es la parte requerida que no coincide. Por otro lado, un negative lookahead se verá para asegurarse de que el elemento en el patrón de búsqueda no esté allí. Un lookahead negativo se usa como (?!...) donde el ... es el patrón que no desea que esté allí. El resto del patrón se devuelve si la parte de búsqueda anticipada negativa no está presente. Lookaheads son un poco confusos, pero algunos ejemplos ayudarán.
let quit = "qu";
Deje que noquit = "qt";
vamos a quRegex = / q (? = u) /;
vamos a qRegex = / q (?! u) /;
quit.match (quRegex); // Devoluciones ["q"]
noquit.match (qRegex); // Devoluciones ["q"]
Un uso más práctico de lookaheads es marcar dos o más patrones en una cadena. Aquí hay un verificador de contraseña simple (ingenuamente) que busca entre 3 y 6 caracteres y al menos un número:
dejar contraseña = "abc123";
deje checkPass = / (? = \ w {3,6}) (? = \ D * \ d) /;
checkPass.test (contraseña); // Devuelve true
## Instructions
Use lookaheads en el pwRegex para hacer coincidir las contraseñas que tienen más de 5 caracteres y tienen dos dígitos consecutivos.
## Tests
```yml tests: - text: Su expresión regular debe utilizar dos lookaheads positivos. testString: 'assert(pwRegex.source.match(/\(\?=.*?\)\(\?=.*?\)/) !== null, "Your regex should use two positive lookaheads.");' - text: Tu expresión regular no debe coincidir con "astronaut" testString: 'assert(!pwRegex.test("astronaut"), "Your regex should not match "astronaut"");' - text: Su expresión regular no debe coincidir con "airplanes" testString: 'assert(!pwRegex.test("airplanes"), "Your regex should not match "airplanes"");' - text: Tu expresión regular no debe coincidir con "banan1" testString: 'assert(!pwRegex.test("banan1"), "Your regex should not match "banan1"");' - text: Tu expresión regular debe coincidir con "bana12" testString: 'assert(pwRegex.test("bana12"), "Your regex should match "bana12"");' - text: Tu expresión regular debe coincidir con "abc123" testString: 'assert(pwRegex.test("abc123"), "Your regex should match "abc123"");' - text: Su expresión regular no debe coincidir con "123" testString: 'assert(!pwRegex.test("123"), "Your regex should not match "123"");' - text: Su expresión regular no debe coincidir con "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 ```