Movatterモバイル変換


[0]ホーム

URL:


  1. 開発者向けのウェブ技術
  2. JavaScript
  3. JavaScript リファレンス
  4. 標準組み込みオブジェクト
  5. Symbol
  6. match

このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docsコミュニティーについてもっと知り、仲間になるにはこちらから。

View in EnglishAlways switch to English

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 ⁨2020年1月⁩.

Symbol.match は静的データプロパティで、ウェルノウンシンボルSymbol.match を表します。String.prototype.match() メソッドは第 1 引数に対して、入力文字列と現在のオブジェクトとの照合に使われるメソッドを、このシンボルで探します。このシンボルは、オブジェクトが正規表現として扱われるべきかどうかを決定するためにも使用されます。

詳しくは、RegExp.prototype[Symbol.match]() およびString.prototype.match() を参照してください。

試してみましょう

const regexp = /foo/;// console.log('/foo/'.startsWith(regexp));// 予想される結果 (Chrome): Error: First argument to String.prototype.startsWith must not be a regular expression// 予想される結果 (Firefox): Error: Invalid type: first can't be a Regular Expression// 予想される結果 (Safari): Error: Argument to String.prototype.startsWith cannot be a RegExpregexp[Symbol.match] = false;console.log("/foo/".startsWith(regexp));// 予想される結果: trueconsole.log("/baz/".endsWith(regexp1));// 予想される結果: false

ウェルノウンシンボルSymbol.match です。

Symbol.match のプロパティ属性
書込可能不可
列挙可能不可
設定可能不可

解説

この関数は、オブジェクトが正規表現の動作をするかどうかを識別するためにも使用されます。たとえば、String.prototype.startsWith(),String.prototype.endsWith(),String.prototype.includes() メソッドは、最初の引数が正規表現であるかどうかを確認し、正規表現である場合はTypeError が発生します。ここで、match シンボルがfalse(または偽値、ただしundefined でないもの)に設定されている場合、そのオブジェクトが正規表現オブジェクトとして使用されることを意図していないことを示します。

isRegExp チェックを無効にする

以下のコードはTypeError を投げます。

js
"/bar/".startsWith(/bar/);// TypeError が発生。/bar/ が正規表現であり、// Symbol.match が変更されていないため。

ただし、Symbol.matchfalse に設定すると、オブジェクトが正規表現オブジェクトではないことを示します。結果として、startsWithendsWith メソッドは、TypeError を発生させません。

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

仕様書

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

ブラウザーの互換性

関連情報

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp