Maison > interface Web > js tutoriel > 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
Libérer: 2024-11-12 21:30:02
original
579 Les gens l'ont consulté

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$
Copier après la connexion

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
Copier après la connexion

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

^(?!.*filename\.js$).*\.js$
Copier après la connexion

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
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