Heim >Web-Frontend >js-Tutorial >Wie kann ich einen negativen Lookbehind in regulären JavaScript-Ausdrücken simulieren?

Wie kann ich einen negativen Lookbehind in regulären JavaScript-Ausdrücken simulieren?

Barbara Streisand
Barbara StreisandOriginal
2024-12-14 15:48:11694Durchsuche

How Can I Simulate Negative Lookbehind in JavaScript Regular Expressions?

JavaScript-Äquivalent von Negative Lookbehind

Negative Lookbehinds, die mit Zeichenfolgen übereinstimmen, die nicht mit einem bestimmten Zeichensatz beginnen, werden von nicht direkt unterstützt Reguläre JavaScript-Ausdrücke. Es gibt jedoch alternative Ansätze, um ähnliche Ergebnisse zu erzielen.

Positive Lookahead und String-Umkehr

Da JavaScript positive Lookahead (?=) unterstützt, umfasst eine Methode Folgendes:

  1. Umkehren der Eingabezeichenfolge.
  2. Verwenden eines umgekehrten regulären Ausdrucks mit positivem Wert Lookahead.
  3. Umkehren und Neuformatieren der Übereinstimmungen.

Beispiel:

const reverse = s => s.split('').reverse().join('');
const regexp = /m(?!([abcdefg]))/;

test(['jim', 'm', 'jam'], regexp);

function test(strings, regexp) {
  strings.map(reverse).forEach((s, i) => {
    match = regexp.test(s);
    console.log(strings[i], match, 'Token: ', match ? reverse(regexp.exec(s)[0]) : 'Ø');
  });
}

Ergebnisse:

jim true Token: m
m true Token: m
jam false Token: Ø

Lookbehind Assertions-Unterstützung (Seit 2018)

Im Jahr 2018 wurden Lookbehind-Behauptungen, einschließlich negativer Lookbehinds, Teil der ECMAScript-Sprachspezifikation. Sie können wie folgt verwendet werden:

Negatives Lookbehind:

(?<!...)

Positives Lookbehind:

(?<=...)

Beispiel:

Passend „max-height“, aber nicht „line-height“:

regexp = /thgieh(?!(-enil))/;
test(['max-height', 'line-height'], regexp);

Ergebnisse:

max-height true Token: height
line-height false Token: Ø

Das obige ist der detaillierte Inhalt vonWie kann ich einen negativen Lookbehind in regulären JavaScript-Ausdrücken simulieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn