Symbol.match

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

説明

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

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

isRegExp チェックを無効にする

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

'/bar/'.startsWith(/bar/); 

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

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

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

仕様

仕様書
ECMAScript (ECMA-262)
Symbol.match の定義

ブラウザー実装状況

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
matchChrome 完全対応 50Edge 完全対応 79Firefox 完全対応 40IE 未対応 なしOpera 完全対応 37Safari 完全対応 10WebView Android 完全対応 50Chrome Android 完全対応 50Firefox Android 完全対応 40Opera Android 完全対応 37Safari iOS 完全対応 10Samsung Internet Android 完全対応 5.0nodejs 完全対応 6.0.0

凡例

完全対応  
完全対応
未対応  
未対応

関連情報