Regex Lookbehind-Alternative in JavaScript
Problem:
JavaScript bietet keine native Methode für Regex-Lookbehinds. Folglich schlägt der folgende reguläre Ausdruck, der in anderen Implementierungen effektiv funktioniert, in JavaScript fehl:
(?<!filename)\.js$
Dieser reguläre Ausdruck zielt darauf ab, mit der Erweiterung „.js“ am Ende einer Zeichenfolge übereinzustimmen, jedoch nur, wenn dies der Fall ist ohne vorangestelltes „filename.js“.
Lösung:
Ein Ansatz zur Simulation eines regulären Ausdrucks Lookbehind in JavaScript beinhaltet die Verwendung von Hilfsfunktionen. Eine einfachere alternative Regex erzielt jedoch das gewünschte Ergebnis:
^(?:(?!filename.js$).)*.js$
Erklärung:
Diese Regex verwendet einen negativen Lookahead, um zu überprüfen, ob jedes Zeichen in der Zeichenfolge dies tut stimmt nicht mit dem Ausdruck „filename.js“ gefolgt vom Ende der Zeichenfolge überein. Nur dann kann dieses Zeichen mit dem regulären Ausdruck übereinstimmen. Nachfolgend finden Sie eine Aufschlüsselung des regulären Ausdrucks:
^ # 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
Verbesserte Lösung:
Eine effizientere Methode, um das gleiche Ergebnis zu erzielen, ist die Verwendung des folgenden regulären Ausdrucks:
^(?!.*filename.js$).*\.js$
Dieser reguläre Ausdruck stellt sicher, dass die gesamte Zeichenfolge nicht „filename.js“ enthalten darf und stimmt anschließend mit jeder Zeichenfolge überein, die mit endet „.js.“
Das obige ist der detaillierte Inhalt vonWie erreicht man die Regex-Lookbehind-Funktionalität in JavaScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!