Symbol.match

よく知られたSymbol.matchシンボルは文字列に対して正規表現のマッチングを指定します。この関数はString.prototype.match() メソッドによって呼ばれます。

説明

この関数はオブジェクトが正規表現の振る舞いをもつかどうか識別するためにも使用されます。例えば、String.prototype.startsWith()String.prototype.endsWith()String.prototype.includes()メソッドは最初の引数が正規表現かどうか調べます。その場合TypeErrorをスローします。現在、matchシンボルがfalse(またはFalsy値)に設定されたら、そのオブジェクトが正規表現オブジェクトとして使用されることが意図されていないことを示しています。

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チェックはオブジェクトが正規表現オブジェクトではないことを示します。結果としてstartsWithメソッドとendsWithメソッドはTypedErrorをスローしなくなります。

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

仕様

仕様 状況 コメント
ECMAScript 2015 (6th Edition, ECMA-262)
Symbol.match の定義
標準 Initial definition.
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

凡例

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

関連情報