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 September 2015.

Die Symbol.match statische Daten-Eigenschaft repräsentiert das wohlbekannte Symbol Symbol.match. Die Methode String.prototype.match() ruft dieses Symbol im ersten Argument auf, um die Methode zu finden, die verwendet wird, um einen Eingabestring mit dem aktuellen Objekt abzugleichen. Dieses Symbol wird auch verwendet, um zu bestimmen, ob ein Objekt als regulärer Ausdruck behandelt werden sollte.

Für weitere Informationen siehe RegExp.prototype[Symbol.match]() und String.prototype.match().

Probieren Sie es aus

const regexp1 = /foo/;
// console.log('/foo/'.startsWith(regexp1));
// 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

regexp1[Symbol.match] = false;

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

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

Wert

Das wohlbekannte Symbol Symbol.match.

Eigenschaften von Symbol.match
Schreibbarnein
Aufzählbarnein
Konfigurierbarnein

Beschreibung

Diese Funktion wird ebenfalls verwendet, um zu identifizieren, ob Objekte das Verhalten von regulären Ausdrücken haben. Zum Beispiel überprü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, falls dies zutrifft. Wird das Symbol match jedoch auf false (oder einen Falsy-Wert außer undefined) gesetzt, zeigt dies an, dass das Objekt nicht als reguläres Ausdrucksobjekt verwendet werden soll.

Beispiele

Markieren eines RegExp als kein regulärer Ausdruck

Der folgende Code wird einen TypeError auslösen:

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 behandelt. Die Methoden startsWith und endsWith werden deshalb keinen TypeError werfen.

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

Spezifikationen

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

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
match

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Siehe auch