So implementieren Sie negative Lookbehinds in JavaScript
JavaScript unterstützt nativ keine negativen Lookbehinds, was die Erstellung regulärer Ausdrücke behindert, die mit Zeichenfolgen übereinstimmen Beginnen Sie nicht mit bestimmten Zeichen.
Lösung mit Lookbehind-Assertions (nach 2018)
Im Jahr 2018 führte JavaScript Lookbehind-Behauptungen ein, die sowohl positive als auch negative Lookbehinds ermöglichten:
Zum Beispiel stimmt der folgende reguläre Ausdruck mit dem Zeichen „m“ in „jim“ oder „m“ überein, aber nicht mit dem Zeichen „jam“. :
(?<!([abcdefg]))m
Lösung vor 2018
Vorher 2018 bestand eine Problemumgehung darin, die Eingabezeichenfolge umzukehren, sie mit einem umgekehrten regulären Ausdruck abzugleichen und dann die Übereinstimmungen umzukehren. Dieser Prozess kann wie folgt implementiert werden:
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>Beispiele</strong></p> <p>Zur Veranschaulichung seiner Verwendung:</p> <ul><li>Für die erste Frage, die in erwähnt wird Im Kontext würde der folgende reguläre Ausdruck mit „m“ in „jim“ oder „m“ übereinstimmen, aber nicht 'jam':</li></ul> <pre class="brush:php;toolbar:false">test(['jim', 'm', 'jam'], /m(?!([abcdefg]))/)
test(['max-height', 'line-height'], /thgieh(?!(-enil))/)
Das obige ist der detaillierte Inhalt vonWie kann ich ein negatives Lookbehind in JavaScript Regex implementieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!