Symbol.match - JavaScript | MDN
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 | |
|---|---|
| Schreibbar | nein |
| Aufzählbar | nein |
| Konfigurierbar | nein |
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
| Spezifikation |
|---|
| ECMAScript® 2026 Language Specification # sec-symbol.match |
Browser-Kompatibilität
Siehe auch
Help improve MDN
Erfahren Sie, wie Sie beitragen können Diese Seite wurde automatisch aus dem Englischen übersetzt.