diff --git a/files/ja/web/javascript/reference/global_objects/symbol/match/index.md b/files/ja/web/javascript/reference/global_objects/symbol/match/index.md index 17897b9f5e68a5..f8a1af80e56cff 100644 --- a/files/ja/web/javascript/reference/global_objects/symbol/match/index.md +++ b/files/ja/web/javascript/reference/global_objects/symbol/match/index.md @@ -1,19 +1,27 @@ --- title: Symbol.match slug: Web/JavaScript/Reference/Global_Objects/Symbol/match +l10n: + sourceCommit: 6fbdb78c1362fae31fbd545f4b2d9c51987a6bca --- {{JSRef}} -**`Symbol.match`** は、文字列に対して正規表現のマッチングを指定します。この関数は {{jsxref("String.prototype.match()")}} メソッドによって呼び出されます。 +**`Symbol.match`** は静的データプロパティで、[ウェルノウンシンボル](/ja/docs/Web/JavaScript/Reference/Global_Objects/Symbol#ウェルノウンシンボル)である `Symbol.match` を表します。{{jsxref("String.prototype.match()")}} メソッドは第 1 引数に対して、入力文字列と現在のオブジェクトとの照合に使われるメソッドを、このシンボルで探します。このシンボルは、オブジェクトが[正規表現として扱われる](/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp#special_handling_for_regexes)べきかどうかを決定するためにも使用されます。 -{{EmbedInteractiveExample("pages/js/symbol-match.html")}} +詳しくは、[`RegExp.prototype[Symbol.match]()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/Symbol.match) および {{jsxref("String.prototype.match()")}} を参照してください。 -## 説明 +{{EmbedInteractiveExample("pages/js/symbol-match.html", "taller")}} -この関数は、オブジェクトが正規表現の動作をするかどうかを識別するためにも使用されます。たとえば、{{jsxref("String.prototype.startsWith()")}}, {{jsxref("String.prototype.endsWith()")}}, {{jsxref("String.prototype.includes()")}} メソッドは、最初の引数が正規表現であるかどうかを確認し、正規表現である場合は {{jsxref("TypeError")}} を投げます。ここで、`一致`記号が `false`(または[偽値](/ja/docs/Glossary/Falsy))に設定されている場合、そのオブジェクトが正規表現オブジェクトとして使用されることを意図していないことを示します。 +## 値 -{{js_property_attributes(0,0,0)}} +ウェルノウンシンボル `Symbol.match` です。 + +{{js_property_attributes(0, 0, 0)}} + +## 解説 + +この関数は、[オブジェクトが正規表現の動作をするかどうか](/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp#正規表現の特殊な扱い)を識別するためにも使用されます。たとえば、{{jsxref("String.prototype.startsWith()")}}, {{jsxref("String.prototype.endsWith()")}}, {{jsxref("String.prototype.includes()")}} メソッドは、最初の引数が正規表現であるかどうかを確認し、正規表現である場合は {{jsxref("TypeError")}} が発生します。ここで、`match` シンボルが `false`(または[偽値](/ja/docs/Glossary/Falsy)、ただし `undefined` でないもの)に設定されている場合、そのオブジェクトが正規表現オブジェクトとして使用されることを意図していないことを示します。 ## 例 @@ -24,30 +32,33 @@ slug: Web/JavaScript/Reference/Global_Objects/Symbol/match ```js "/bar/".startsWith(/bar/); -// Throws TypeError, as /bar/ is a regular expression -// and Symbol.match is not modified. +// TypeError が発生。/bar/ が正規表現であり、 +// Symbol.match が変更されていないため。 ``` -ただし、`Symbol.match` を `false` に設定すると、(`match` プロパティを使用する)`isRegExp` チェックは、オブジェクトが正規表現オブジェクトではないことを示します。結果として、`startsWith` と `endsWith` メソッドは、TypeError を投げません。 +ただし、`Symbol.match` を `false` に設定すると、オブジェクトが[正規表現オブジェクトではない](/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp#正規表現の特殊な扱い)ことを示します。結果として、`startsWith` と `endsWith` メソッドは、`TypeError` を発生させません。 ```js -var re = /foo/; +const re = /foo/; re[Symbol.match] = false; "/foo/".startsWith(re); // true "/baz/".endsWith(re); // false ``` -## 仕様 +## 仕様書 {{Specifications}} -## ブラウザー実装状況 +## ブラウザーの互換性 {{Compat}} ## 関連情報 +- [`Symbol.match` のポリフィル (`core-js`)](https://github.com/zloirock/core-js#ecmascript-symbol) +- {{jsxref("Symbol.matchAll")}} - {{jsxref("Symbol.replace")}} - {{jsxref("Symbol.search")}} - {{jsxref("Symbol.split")}} -- {{jsxref("RegExp.@@match", "RegExp.prototype[@@match]()")}} +- {{jsxref("String.prototype.match()")}} +- [`RegExp.prototype[Symbol.match]()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/Symbol.match)