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!