Maison  >  Article  >  interface Web  >  La recherche anticipée négative peut-elle imiter la recherche Regex en JavaScript ?

La recherche anticipée négative peut-elle imiter la recherche Regex en JavaScript ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-12 21:30:02526parcourir

Can Negative Lookahead Mimic Regex Lookbehind in JavaScript?

Lookahead négatif en JavaScript : une alternative au Regex Lookbehind

Question :

En JavaScript, qui manque de Regex lookbehind, existe-t-il un moyen de faire correspondre un modèle spécifique en excluant un certain condition ?

Réponse :

Avant ECMAScript 2018, JavaScript ne prenait pas en charge nativement les assertions négatives d'analyse. Voici une approche alternative :

^(?:(?!filename\.js$).)*\.js$

Explication :

Cette expression régulière simule le lookbehind en vérifiant explicitement chaque caractère de la chaîne. Si l'expression lookbehind ("filename.js$"), suivie du reste de l'expression régulière (".js$"), ne correspond pas au caractère actuel, le caractère est autorisé.

^                 # Start of string
(?:               # Try to match the following:
 (?!              # First assert that we can't match the following:
  filename\.js    # filename.js 
  $               # and end-of-string
 )                # End of negative lookahead
 .                # Match any character
)*                # Repeat as needed
\.js              # Match .js
$                 # End of string

Cependant, une alternative plus simple a émergé depuis :

^(?!.*filename\.js$).*\.js$

Cette dernière approche est plus efficace car elle ne vérifie pas l'anticipation à chaque fois. personnage.

^                 # Start of string
(?!               # Assert that we can't match the following:
 .*               # any string, 
  filename\.js    # followed by filename.js
  $               # and end-of-string
)                 # End of negative lookahead
.*                # Match any string
\.js              # Match .js
$                 # End of string

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