Maison >interface Web >js tutoriel >Comment puis-je simuler des assertions Lookbehind négatives en JavaScript ?

Comment puis-je simuler des assertions Lookbehind négatives en JavaScript ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-26 16:27:13750parcourir

How Can I Simulate Negative Lookbehind Assertions in JavaScript?

Obtenir une fonctionnalité d'analyse négative en JavaScript

Les assertions d'analyse négative permettent de faire correspondre une chaîne qui ne commence pas par un ensemble de caractères spécifique. Malgré le manque de prise en charge explicite des lookbehinds négatifs dans JavaScript, il existe des alternatives viables.

À partir de 2018, les assertions Lookbehind ont été incorporées dans la spécification ECMAScript :

// Positive lookbehind:
(?<=...)

// Negative lookbehind:
(?<!...)

Pre -Approche 2018

Alternativement, si des regards négatifs sont indisponible, envisagez l'approche suivante :

  1. Inversez la chaîne d'entrée.
  2. Faire correspondre une expression régulière inversée.
  3. Inversez et reformatez les correspondances résultantes.

Pour exemple :

const reverse = (string) => {
  return string.split('').reverse().join('');
};

const test = (inputStrings, reversedRegex) => {
  inputStrings.map(reverse).forEach((reversedString, idx) => {
    const match = reversedRegex.test(reversedString);
    console.log(
      inputStrings[idx],
      match,
      'token:',
      match ? reverse(reversedRegex.exec(reversedString)[0]) : 'Ø'
    );
  });
};

Exemple 1 : Pour faire correspondre "m" dans "jim" ou "m", mais pas dans "jam" :

test(['jim', 'm', 'jam'], /m(?!([abcdefg]))/);

Sortie :

jim true token: m
m true token: m
jam false token: Ø

Exemple 2 : Pour faire correspondre "max-height" mais pas "line-height" :

test(['max-height', 'line-height'], /thgieh(?!(-enil))/);

Sortie :

max-height true token: height
line-height false token: Ø

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn