Heim >Web-Frontend >js-Tutorial >Wie kann ich ein negatives Lookbehind in JavaScript Regex implementieren?

Wie kann ich ein negatives Lookbehind in JavaScript Regex implementieren?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-19 06:53:13454Durchsuche

How Can I Implement Negative Lookbehind in JavaScript Regex?

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:

  • Positive Lookbehinds: (? <=...)
  • Negativ lookbehind: (?

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]))/)
  • Ein weiteres Beispiel, das mit „max-height“, aber nicht mit „line-height“ übereinstimmt:
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!

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