Freigeben über


ECMAScript- oder kanonisches Vergleichsverhalten

Aktualisiert: November 2007

Das Verhalten von regulären ECMAScript-Ausdrücken weicht in drei Punkten von dem von kanonischen regulären Ausdrücken ab:

  • Zeichenklassen werden in übereinstimmenden Ausdrücken unterschiedlich angegeben. Kanonische reguläre Ausdrücke unterstützen standardmäßig Unicode-Zeichenkategorien. ECMAScript unterstützt Unicode nicht.

  • Eine Aufzeichnungsklasse für einen regulären Ausdruck mit einem Rückverweis auf sich selbst muss mit jeder Aufzeichnungsiteration aktualisiert werden.

  • Zweideutigkeiten zwischen Oktalescapezeichen und Rückverweisen werden unterschiedlich behandelt.

Hinweis:

Standardmäßig verwendet das Modul für reguläre Ausdrücke das kanonische Vergleichsverhalten. ECMAScript-konformes Verhalten wird verwendet, wenn der options-Parameter des Regex.Regex(String, RegexOptions)-Konstruktors oder von Vergleichsmethoden für reguläre Ausdrücke wie Regex.Match(String, String, RegexOptions), Regex.Matches(String, String, RegexOptions) und Regex.Replace(String, String, String, RegexOptions) das RegexOptions.ECMAScript-Flag enthält.

Die folgende Tabelle fasst die Unterschiede zwischen der Oktal- und der Rückverweisinterpretation durch kanonische reguläre Ausdrücke und reguläre ECMAScript-Ausdrücke zusammen.

Verhalten von kanonischen regulären Ausdrücken

Verhalten von regulären ECMAScript-Ausdrücken

Wenn \ von 0 und dann von 0 bis 2 Oktalziffern gefolgt wird, wird es als Oktalzahl interpretiert. Beispiel: \044 bedeutet immer '$'.

Gleiches Verhalten.

Wenn \ von einer Ziffer zwischen 1 und 9 und dann von keinen weiteren Dezimalziffern gefolgt wird, wird es als Rückverweis interpretiert. Beispiel: \9 bedeutet immer Rückverweis 9, auch wenn Aufzeichnung 9 nicht vorhanden ist. Wenn die Aufzeichnung nicht vorhanden ist, löst der Parser für den regulären Ausdruck eine Syntaxausnahme aus.

Wenn eine Aufzeichnung einer einzigen Dezimalziffer vorhanden ist, gilt es als Rückverweis auf diese Ziffer. Andernfalls wird es als Literal interpretiert.

Wenn \ von einer Ziffer zwischen 1 und 9 und dann von weiteren Dezimalziffern gefolgt wird, werden die Ziffern als Dezimalwert interpretiert. Falls diese Aufzeichnung vorhanden ist, wird der Ausdruck als Rückverweis interpretiert.

Ansonsten werden die vorangestellten Oktalziffern bis zu Oktahlzahl 377 interpretiert. Das bedeutet, dass nur die niedrigen 8 Bits des Werts berücksichtigt werden. Die übrigen Ziffern werden als Literale interpretiert. Beispiel: Wenn im Ausdruck \3000 die Aufzeichnung 300 vorhanden ist, wird der Ausdruck als Rückverweis 300 interpretiert. Wenn Aufzeichnung 300 nicht vorhanden ist, wird er als Oktalzahl 300 gefolgt von 0 interpretiert.

Wenn \ von einer Ziffer zwischen 1 und 9 und dann von weiteren Dezimalziffern gefolgt wird, wird es als Rückverweis interpretiert, indem so viele Ziffern wie möglich in einen Dezimalwert konvertiert werden, der auf eine Aufzeichnung verweisen kann. Wenn keine Ziffern konvertiert werden können, wird der Ausdruck als Oktalzahl unter Verwendung der ersten Oktalziffern bis zu Oktalzahl 377 interpretiert, und die restlichen Ziffern werden als Literale interpretiert.

Siehe auch

Weitere Ressourcen

Sprachelemente für reguläre Ausdrücke