Symbol.match

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.

Die statische Daten-Eigenschaft Symbol.match repräsentiert das bekannte Symbol Symbol.match. Die Methode String.prototype.match() verwendet dieses Symbol beim ersten Argument, um die Methode zu bestimmen, die verwendet wird, um eine Eingabe-Zeichenfolge mit dem aktuellen Objekt abzugleichen. Dieses Symbol wird auch verwendet, um festzustellen, ob ein Objekt als Regex behandelt werden sollte.

Für weitere Informationen siehe 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 festzustellen, ob Objekte das Verhalten von regulären Ausdrücken haben. 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 werfen einen TypeError, wenn dies der Fall ist. Wenn jedoch das match-Symbol auf false (oder einen falschen Wert außer undefined) gesetzt ist, zeigt es an, dass das Objekt nicht als reguläres Ausdrucksobjekt verwendet werden soll.

Beispiele

Markieren eines RegExp als kein Regex

Der folgende Code wird einen TypeError werfen:

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 als kein reguläres Ausdrucksobjekt betrachtet. Die Methoden startsWith und endsWith werden infolgedessen keinen TypeError werfen.

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

Spezifikationen

Specification
ECMAScript® 2026 Language Specification
# sec-symbol.match

Browser-Kompatibilität

Siehe auch