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!