Maison > interface Web > js tutoriel > Comment puis-je implémenter un lookbehind négatif dans JavaScript Regex ?

Comment puis-je implémenter un lookbehind négatif dans JavaScript Regex ?

Mary-Kate Olsen
Libérer: 2024-12-19 06:53:13
original
447 Les gens l'ont consulté

How Can I Implement Negative Lookbehind in JavaScript Regex?

Comment implémenter un lookbehind négatif en JavaScript

JavaScript ne prend pas en charge nativement les lookbehinds négatifs, ce qui entrave la création d'expressions régulières qui correspondent à des chaînes qui ne commencez pas par des caractères spécifiques.

Solution avec les assertions Lookbehind (après 2018)

En 2018, JavaScript a introduit les assertions lookbehind, permettant des lookbehind positifs et négatifs :

  • lookbehind positif : (? <=...)
  • Négatif lookbehind : (?

Par exemple, l'expression régulière suivante correspond au caractère 'm' dans 'jim' ou 'm', mais pas dans 'jam' :

(?<!([abcdefg]))m
Copier après la connexion

Solution Pré-2018

Avant En 2018, une solution de contournement impliquait d'inverser la chaîne d'entrée, de faire correspondre une expression régulière inversée, puis d'inverser les correspondances. Ce processus peut être mis en œuvre de la manière suivante :

const reverse = s => s.split('').reverse().join('');

const test = (stringToTests, reversedRegexp) => stringToTests
  .map(reverse)
  .forEach((s,i) => {
    const match = reversedRegexp.test(s);
    console.log(stringToTests[i], match, 'token:', match ? reverse(reversedRegexp.exec(s)[0]) : 'Ø');
  });<p><strong>Exemples</strong></p>
<p>Pour illustrer son utilisation :</p>
<ul><li>Pour la question initiale mentionnée dans le contexte, l'expression régulière suivante correspondrait à 'm' dans 'jim' ou 'm', mais pas 'jam' :</li></ul>
<pre class="brush:php;toolbar:false">test(['jim', 'm', 'jam'], /m(?!([abcdefg]))/)
Copier après la connexion
  • Un autre exemple, correspondant à "max-height" mais pas à "line-height":
test(['max-height', 'line-height'], /thgieh(?!(-enil))/)
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal