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.match
を false
に設定すると、(match
プロパティを使用する)isRegExp
チェックは、オブジェクトが正規表現オブジェクトではないことを示します。結果として、startsWith
と endsWith
メソッドは、TypeError を投げません。
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