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 freilegen, sind veraltet. Siehe veraltete RegExp-Features für weitere Informationen.
Die RegExp.$1, …, RegExp.$9
statischen Zugriffs-Eigenschaften geben die in Klammern gesetzten Teilzeichenfolgen-Übereinstimmungen zurück.
Beschreibung
Da $1
–$9
statische Eigenschaften von RegExp
sind, verwenden Sie sie immer als RegExp.$1
, RegExp.$2
usw., anstatt als Eigenschaften eines von Ihnen erstellten RegExp
-Objekts.
Die Werte von $1, …, $9
aktualisieren sich, wann immer eine RegExp
-Instanz (aber keine RegExp
-Unterklasse) einen erfolgreichen Treffer erzielt. Wenn keine Treffer erzielt wurden oder wenn der letzte Treffer die entsprechende Erfassungsgruppe nicht enthält, ist die jeweilige Eigenschaft ein leerer String. Der Set-Zugriffsoperator jeder Eigenschaft ist undefined
, sodass Sie die Eigenschaften nicht direkt ändern können.
Die Anzahl der möglichen in Klammern gesetzten Teilzeichenfolgen ist unbegrenzt, aber das RegExp
-Objekt kann nur die ersten neun halten. Sie können auf alle in Klammern gesetzten Teilzeichenfolgen ü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 zu verwechseln.
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.
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 könnte, sodass der Zugriff auf diese speziellen Eigenschaften sofort erfolgen sollte, andernfalls könnte das Ergebnis unerwartet sein.
Spezifikationen
Specification |
---|
Legacy RegExp features # additional-properties-of-the-regexp-constructor |