Frage:
In JavaScript, dem der Regex-Lookbehind fehlt, Gibt es eine Möglichkeit, ein bestimmtes Muster abzugleichen und ein bestimmtes auszuschließen? Bedingung?
Antwort:
Vor ECMAScript 2018 unterstützte JavaScript negative Lookbehind-Behauptungen nicht nativ. Hier ist ein alternativer Ansatz:
^(?:(?!filename\.js$).)*\.js$
Erklärung:
Diese Regex simuliert Lookbehind, indem sie jedes Zeichen der Zeichenfolge explizit überprüft. Wenn der Lookbehind-Ausdruck („filename.js$“), gefolgt vom Rest des regulären Ausdrucks („.js$“), nicht mit dem aktuellen Zeichen übereinstimmt, ist das Zeichen zulässig.
^ # 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
Seitdem ist jedoch eine einfachere Alternative aufgetaucht:
^(?!.*filename\.js$).*\.js$
Dieser letztere Ansatz ist effizienter, da er den Lookahead nicht jedes Mal überprüft Charakter.
^ # 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
Das obige ist der detaillierte Inhalt vonKann ein negativer Lookahead den Regex-Lookbehind in JavaScript nachahmen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!