Comment implémenter un lookbehind négatif en JavaScript
JavaScript ne prend pas en charge nativement les lookbehinds négatifs, ce qui entrave la création d'expressions régulières qui correspondent à des chaînes qui ne commencez pas par des caractères spécifiques.
Solution avec les assertions Lookbehind (après 2018)
En 2018, JavaScript a introduit les assertions lookbehind, permettant des lookbehind positifs et négatifs :
Par exemple, l'expression régulière suivante correspond au caractère 'm' dans 'jim' ou 'm', mais pas dans 'jam' :
(?<!([abcdefg]))m
Solution Pré-2018
Avant En 2018, une solution de contournement impliquait d'inverser la chaîne d'entrée, de faire correspondre une expression régulière inversée, puis d'inverser les correspondances. Ce processus peut être mis en œuvre de la manière suivante :
const reverse = s => s.split('').reverse().join(''); const test = (stringToTests, reversedRegexp) => stringToTests .map(reverse) .forEach((s,i) => { const match = reversedRegexp.test(s); console.log(stringToTests[i], match, 'token:', match ? reverse(reversedRegexp.exec(s)[0]) : 'Ø'); });<p><strong>Exemples</strong></p> <p>Pour illustrer son utilisation :</p> <ul><li>Pour la question initiale mentionnée dans le contexte, l'expression régulière suivante correspondrait à 'm' dans 'jim' ou 'm', mais pas 'jam' :</li></ul> <pre class="brush:php;toolbar:false">test(['jim', 'm', 'jam'], /m(?!([abcdefg]))/)
test(['max-height', 'line-height'], /thgieh(?!(-enil))/)
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!