Resumo : neste tutorial, você aprenderá sobre JavaScript regex lookahead para corresponder, X
mas se for seguido por Y
.
Introdução ao lookahead de regex JavaScript
Em expressões regulares , um lookahead permite a correspondência X
, mas somente se for seguido por Y
.
Aqui está a sintaxe do lookahead:
X(?=Y)
Linguagem de código: JavaScript ( javascript )
Nesta sintaxe, o mecanismo regex procura X
e só corresponde se for seguido por Y
.
Por exemplo, suponha que você tenha a seguinte string:
const s = '1 car is 15 feet long';
Linguagem de código: JavaScript ( javascript )
E você deseja corresponder o número 15 seguido por um espaço e a string literal feet
, não o número 1
. Para fazer isso, você pode usar um lookahead em uma expressão regular:
/\d+(?=\s*feet)/
Linguagem de código: JavaScript ( javascript )
Nesta expressão regular:
\d+
corresponde a um ou mais dígitos?=
é a sintaxe antecipada\s*
corresponde a zero ou mais espaços em brancofeet
corresponde à string literalfeet
O código a seguir usa o padrão acima para corresponder ao número seguido por zero ou mais espaços e a string literal feet
:
const s = '1 car is 15 feet long';
const pattern = /\d+(?=\s*feet)/;
const match = s.match(pattern);
console.log(match);
Linguagem de código: JavaScript ( javascript )
Saída:
15
Linguagem de código: PHP ( php )
Regex múltiplos lookaheads
É possível ter vários lookaheads em uma expressão regular com a seguinte sintaxe:
X(?=Y)(?=Z)
Linguagem de código: JavaScript ( javascript )
Nesta sintaxe, o mecanismo regex executa as seguintes etapas:
- Procure por X
- Verifique se Y está imediatamente depois de X e pule se não estiver.
- Verifique se Z também está imediatamente após Y; pule se não for.
- Se ambos os testes forem aprovados, retorne X como correspondência; caso contrário, procure a próxima correspondência.
Portanto, as X(?=Y)(?=Z)
partidas X
seguiram Y
e Z
simultaneamente.
Lookaheads negativos de Regex
Suponha que você queira corresponder o número 1
, mas não o número 15
na seguinte string:
const s = '1 car is 15 feet long';
Linguagem de código: JavaScript ( javascript )
Para fazer isso, você usa um lookahead negativo. Aqui está a sintaxe do lookahead negativo:
X(?!Y)
Linguagem de código: JavaScript ( javascript )
Nesta sintaxe, o mecanismo regex corresponde X
apenas se não for seguido por Y
.
O exemplo a seguir ilustra como usar um lookahead negativo:
const s = '1 car is 15 feet long';
const pattern = /\d+(?!\s*feet)/;
const match = s.match(pattern);
console.log(match);
Linguagem de código: JavaScript ( javascript )
Saída:
1
Linguagem de código: texto simples ( texto simples )
Resumo
- Um lookahead de regex
X(?=Y)
correspondeX
apenas se for seguido porY
. - Um lookahead de regex negativo
X(?!Y)
correspondeX
apenas se não for seguido porY
.