Symbol.match

Symbol.match は、文字列に対して正規表現のマッチングを指定します。この関数は String.prototype.match() メソッドによって呼び出されます。

試してみましょう

説明

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

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

isRegExp チェックを無効にする

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

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

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

ただし、Symbol.matchfalse に設定すると、(match プロパティを使用する)isRegExp チェックは、オブジェクトが正規表現オブジェクトではないことを示します。結果として、startsWithendsWith メソッドは、TypeError を投げません。

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

仕様

Specification
ECMAScript Language Specification
# sec-symbol.match

ブラウザー実装状況

BCD tables only load in the browser

関連情報