Maison  >  Article  >  interface Web  >  Comment obtenir la fonctionnalité Regex Lookbehind en JavaScript ?

Comment obtenir la fonctionnalité Regex Lookbehind en JavaScript ?

DDD
DDDoriginal
2024-11-13 12:41:02639parcourir

How to Achieve Regex Lookbehind Functionality in JavaScript?

Alternative Regex Lookbehind en JavaScript

Problème :

JavaScript n'offre pas de méthode native pour les regex lookbehinds. Par conséquent, l'expression régulière suivante, qui fonctionne efficacement dans d'autres implémentations, échoue en JavaScript :

(?<!filename)\.js$

Cette expression régulière vise à faire correspondre l'extension ".js" à la fin d'une chaîne, mais seulement si elle est non précédé de "filename.js."

Solution :

Une approche pour simuler une regex lookbehind en JavaScript implique l'utilisation de fonctions d'assistance. Cependant, une expression régulière alternative plus simple permet d'obtenir le résultat souhaité :

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

Explication :

Cette expression régulière utilise une analyse anticipée négative pour vérifier que chaque caractère de la chaîne le fait ne correspond pas à l'expression "filename.js" suivie de la fin de la chaîne. Ce n'est qu'alors que ce caractère pourra correspondre à l'expression régulière. Vous trouverez ci-dessous un aperçu de l'expression régulière :

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

Solution améliorée :

Une méthode plus efficace pour obtenir le même résultat consiste à utiliser l'expression régulière suivante :

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

Cette expression régulière affirme que la chaîne entière ne doit pas contenir "filename.js" et correspond ensuite à toute chaîne se terminant par ".js."

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