Olhe para frente

Resumo : neste tutorial, você aprenderá sobre JavaScript regex lookahead para corresponder, Xmas 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 Xe 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 branco
  • feetcorresponde à 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:

15Linguagem 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:

  1. Procure por X
  2. Verifique se Y está imediatamente depois de X e pule se não estiver.
  3. Verifique se Z também está imediatamente após Y; pule se não for.
  4. 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 Xseguiram Ye Zsimultaneamente.

Lookaheads negativos de Regex

Suponha que você queira corresponder o número 1, mas não o número 15na 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 Xapenas 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:

1Linguagem de código:  texto simples  ( texto simples )

Resumo

  • Um lookahead de regex X(?=Y)corresponde Xapenas se for seguido por Y.
  • Um lookahead de regex negativo X(?!Y)corresponde Xapenas se não for seguido por Y.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *