Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2016年9月.
[Symbol.match]() は RegExp インスタンスのメソッドで、 String.prototype.match() がどのように動作するのかを指定します。さらに、これが存在するかどうかが、そのオブジェクトが正規表現とみなされるかどうかにも影響します。
文字列 (String) で、照合の対象となるものです。
配列 (Array) で、内容はグローバル (g) フラグがあるかどうかで変わります。一致するものが見つからなければ null になります。
このメソッドは、String.prototype.match() で内部的に呼び出されます。
たとえば、次の 2 つの例は同じ結果を返します。
正規表現がグローバル(g フラグ付き)である場合、この正規表現の exec() メソッドは、 exec() が null を返すまで繰り返し呼び出されます。そうでない場合、 exec() は一度だけ呼び出され、その結果が [Symbol.match]() の返値となります。
[Symbol.match]() は exec() を null が返るまで呼び出し続け、最後の照合に失敗すると自動的に正規表現の lastIndex を 0 にリセットします。しかし、正規表現が粘着的であるもののグローバルではない場合、 lastIndex はリセットされません。この場合、 match() を呼び出すたびに異なる結果を返すかもしれません。
正規表現が粘着的かつグローバルな場合、粘着的な照合、つまり lastIndex 以降の照合は行われません。
もし現在の照合が空文字列であったとしても、 lastIndex は進みます。正規表現が Unicode 対応モードであれば、Unicode のコードポイント 1 つ分進みます。そうでなければ、 UTF-16 コード単位分進みます。
このメソッドは RegExp サブクラス内で照合の動作をカスタマイズするために存在します。
さらに、[Symbol.match]() プロパティはオブジェクトが正規表現であるかどうかをチェックするために使われます。
このメソッドは、ほとんど String.prototype.match() と同じ方法で使用することができますが、 this と引数の並び順が異なります。
RegExp のサブクラスは、既定の動作を修正するために [Symbol.match]() メソッドをオーバーライドできます。
| ECMAScript® 2027 Language Specification # sec-regexp.prototype-%symbol.match% |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 2025年11月10日 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.