JavaScript Regex Lookbehind

Resumo : neste tutorial, você aprenderá como usar JavaScript regex lookbehind em expressões regulares para corresponder Xse for precedido por Y.

Introdução ao lookbehind de regex JavaScript

Em expressões regulares , um lookbehind corresponde a um elemento se houver outro elemento específico antes dele. Um lookbehind tem a seguinte sintaxe:

(?<=Y)X

Nesta sintaxe, o padrão corresponde Xse houver Yantes dele.

Por exemplo, suponha que você queira corresponder o número 900e não o número 1na seguinte string:

'1 computer costs $900'Linguagem de código:  JavaScript  ( javascript )

Para fazer isso, você usa uma antecipação na expressão regular da seguinte maneira:

/(?<=\$)\d+/

Nesta expressão regular:

  • Corresponde (?<=\$)a um elemento se houver uma string literal $antes dele. Por $ser um caractere especial na regex, precisamos usar a barra invertida \para escapar dele. Ao fazer isso, o mecanismo regex trata \$como um caractere literal $.
  • Corresponde a \d+um ou mais dígitos.

O exemplo a seguir ilustra como usar um lookbehind em uma expressão regular para corresponder a um número que tem o $sinal antes dele:

const s = '1 computer costs $900';
const pattern = /(?<=\$)\d+/;

const match = s.match(pattern);
console.log(match);Linguagem de código:  JavaScript  ( javascript )

Saída:

[ '900', index: 18, input: '1 computer costs $900', groups: undefined ]Linguagem de código:  JSON/JSON com comentários  ( json )

Olhar negativo para trás

Para negar um lookbehind, você usa um lookbehind negativo com a seguinte sintaxe:

(?<!Y)X

Nesta sintaxe, o mecanismo regex corresponde Xse não Y houver antes dele. O exemplo a seguir usa uma expressão regular com lookbehind negativo para corresponder a um número que não tem a $letra antes:

const s = '1 computer costs $900';
const pattern = /(?<!\$)\d+/;

const match = s.match(pattern);
console.log(match);Linguagem de código:  JavaScript  ( javascript )

Saída:

1

Resumo

  • Um lookbehind (?<!Y)Xcorresponde Xapenas se is for precedido por Y.
  • Um lookbehind negativo (?<!Y)Xcorresponde Xapenas se não for precedido por Y.

Deixe um comentário

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