RegExp.$1, …, RegExp.$9

Veraltet: Diese Funktion wird nicht mehr empfohlen. Obwohl einige Browser sie möglicherweise noch unterstützen, könnte sie bereits aus den relevanten Webstandards entfernt worden sein, in Kürze entfernt werden oder nur noch aus Kompatibilitätsgründen bestehen. Vermeiden Sie die Verwendung und aktualisieren Sie vorhandenen Code, falls möglich; siehe die Kompatibilitätstabelle am Ende dieser Seite, um Ihre Entscheidung zu unterstützen. Beachten Sie, dass diese Funktion jederzeit aufhören könnte zu funktionieren.

Hinweis: Alle statischen RegExp-Eigenschaften, die den letzten Übereinstimmungszustand global verfügbar machen, sind veraltet. Weitere Informationen finden Sie unter veraltete RegExp-Funktionen.

Die statischen Zugriffsattribute RegExp.$1, …, RegExp.$9 geben geklammerte Teilstring-Übereinstimmungen zurück.

Beschreibung

Da $1$9 statische Eigenschaften von RegExp sind, verwenden Sie sie immer als RegExp.$1, RegExp.$2, usw., und nicht als Eigenschaften eines von Ihnen erstellten RegExp-Objekts.

Die Werte von $1, …, $9 werden aktualisiert, wann immer eine Instanz von RegExp (aber nicht von einer RegExp-Unterklasse) eine erfolgreiche Übereinstimmung erzielt. Wenn keine Übereinstimmungen erzielt wurden oder die letzte Übereinstimmung die entsprechende Erfassungsgruppe nicht enthält, ist die jeweilige Eigenschaft ein leerer String. Der Set-Zugriff von jeder Eigenschaft ist undefined, sodass Sie die Eigenschaften nicht direkt ändern können.

Die Anzahl der möglichen geklammerten Teilstrings ist unbegrenzt, aber das RegExp-Objekt kann nur die ersten neun speichern. Sie können auf alle geklammerten Teilstrings über die Indizes des zurückgegebenen Arrays zugreifen.

$1, …, $9 können auch im Ersetzungsstring von String.prototype.replace() verwendet werden, aber das ist nicht mit den RegExp.$n-Legacy-Eigenschaften verbunden.

Beispiele

Verwendung von $n mit RegExp.prototype.test()

Das folgende Skript verwendet die Methode RegExp.prototype.test(), um eine Zahl in einem generischen String zu erfassen.

js
const str = "Test 24";
const number = /(\d+)/.test(str) ? RegExp.$1 : "0";
number; // "24"

Bitte beachten Sie, dass jede Operation, die die Verwendung anderer regulärer Ausdrücke zwischen einem re.test(str)-Aufruf und der RegExp.$n-Eigenschaft beinhaltet, Nebeneffekte haben kann, daher sollte der Zugriff auf diese speziellen Eigenschaften unverzüglich erfolgen, ansonsten könnte das Ergebnis unerwartet sein.

Spezifikationen

Specification
Legacy RegExp features
# additional-properties-of-the-regexp-constructor

Browser-Kompatibilität

Siehe auch