Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

Symbol.match

Baseline
Weitgehend verfügbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Januar 2020 browserübergreifend verfügbar.

Die statische Dateneigenschaft Symbol.match repräsentiert das bekannte Symbol Symbol.match. Die Methode String.prototype.match() sucht in ihrem ersten Argument nach diesem Symbol, um die Methode zu finden, mit der eine Eingabezeichenfolge mit dem aktuellen Objekt abgeglichen wird. Dieses Symbol wird auch verwendet, um zu bestimmen, ob ein Objekt als regulärer Ausdruck behandelt werden soll.

Weitere Informationen finden Sie unter RegExp.prototype[Symbol.match]() und String.prototype.match().

Probieren Sie es aus

const regexp = /foo/;
// console.log('/foo/'.startsWith(regexp));
// Expected output (Chrome): Error: First argument to String.prototype.startsWith must not be a regular expression
// Expected output (Firefox): Error: Invalid type: first can't be a Regular Expression
// Expected output (Safari): Error: Argument to String.prototype.startsWith cannot be a RegExp

regexp[Symbol.match] = false;

console.log("/foo/".startsWith(regexp));
// Expected output: true

console.log("/baz/".endsWith(regexp));
// Expected output: false

Wert

Das bekannte Symbol Symbol.match.

Eigenschaften von Symbol.match
Schreibbarnein
Aufzählbarnein
Konfigurierbarnein

Beschreibung

Diese Funktion wird auch verwendet, um Objekte mit dem Verhalten regulärer Ausdrücke zu erkennen. Beispielsweise prüfen die Methoden String.prototype.startsWith(), String.prototype.endsWith() und String.prototype.includes(), ob ihr erstes Argument ein regulärer Ausdruck ist, und lösen in diesem Fall einen TypeError aus. Wenn das Symbol match auf false (oder einen Falsy-Wert außer undefined) gesetzt ist, zeigt dies an, dass das Objekt nicht als regulärer Ausdruck verwendet werden soll.

Beispiele

Ein RegExp als nicht regulären Ausdruck kennzeichnen

Der folgende Code löst einen TypeError aus:

js
"/bar/".startsWith(/bar/);

// Throws TypeError, as /bar/ is a regular expression
// and Symbol.match is not modified.

Wenn Sie jedoch Symbol.match auf false setzen, wird das Objekt nicht als regulärer Ausdruck betrachtet. Die Methoden startsWith und endsWith lösen deshalb keinen TypeError aus.

js
const re = /foo/;
re[Symbol.match] = false;
"/foo/".startsWith(re); // true
"/baz/".endsWith(re); // false

Spezifikationen

Spezifikation
ECMAScript® 2027 Language Specification
# sec-symbol.match

Browser-Kompatibilität

Siehe auch