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";Um uso mais prático de
deixe noquit = "qt";
deixe quRegex = / q (? = u) /;
deixe qRegex = / q (?! u) /;
quit.match (quRegex); // Retorna ["q"]
noquit.match (qRegex); // Retorna ["q"]
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
lookaheads
no pwRegex
para corresponder senhas com mais de 5 caracteres e dois dígitos consecutivos. 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"
");'
```