Spec-Zone.ru › JavaScript

Symbol.match

Базовый уровень Широко доступно

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и в различных версиях браузеров. Она доступна во всех браузерах с сентября 2015 года.

Статическое свойство данных Symbol.match представляет собой общеизвестный символ Symbol.match. Метод String.prototype.match() ищет этот символ в своём первом аргументе для метода, используемого для сопоставления входной строки с текущим объектом. Этот символ также используется для определения того, следует ли обрабатывать объект как регулярное выражение.

Для получения дополнительной информации см. RegExp.prototype[Symbol.match]() и String.prototype.match().

Попробуйте

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

Значение

Общеизвестный символ Symbol.match.

Атрибуты свойства Symbol.match
Записываемость нет
Перечислимость нет
Конфигурируемость нет

Описание

Эта функция также используется для определения того, имеют ли объекты поведение регулярных выражений. Например, методы String.prototype.startsWith(), String.prototype.endsWith() и String.prototype.includes() проверяют, является ли их первый аргумент регулярным выражением, и если это так, то выбрасывают TypeError. Теперь, если символ match установлен в false (или ложное значение, кроме undefined), это указывает на то, что объект не предназначен для использования в качестве объекта регулярного выражения.

Примеры

Пометка RegExp как нерегулярного выражения

Следующий код вызовет TypeError:

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

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

Однако, если вы установите Symbol.match в false, объект будет рассматриваться как не являющийся объектом регулярного выражения. Как следствие, методы startsWith и endsWith не вызовут TypeError.

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

Спецификации

Спецификация
Спецификация языка ECMAScript® 2027
# sec-symbol.match

Совместимость с браузерами

Desktop Mobile Server
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet WebView Android WebView on iOS Bun Deno Node.js
match
50
79
40
37
10
50
40
37
10
5.0
50
10
1.0.0
1.0
6.0.0

См. также

  • Полифил Symbol.match в core-js
  • Symbol.matchAll
  • Symbol.replace
  • Symbol.search
  • Symbol.split
  • String.prototype.match()
  • RegExp.prototype[Symbol.match]()

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/match

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API