From d372ae87140d8b9da365d665c4bf59e49399fb86 Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Wed, 11 Sep 2024 19:25:07 +0900 Subject: [PATCH] =?UTF-8?q?2024/07/15=20=E6=99=82=E7=82=B9=E3=81=AE?= =?UTF-8?q?=E8=8B=B1=E8=AA=9E=E7=89=88=E3=81=AB=E5=9F=BA=E3=81=A5=E3=81=8D?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../global_objects/symbol/match/index.md | 35 ++++++++++------ .../global_objects/symbol/matchall/index.md | 40 +++++++++---------- .../global_objects/symbol/replace/index.md | 23 ++++++++--- 3 files changed, 59 insertions(+), 39 deletions(-) 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) diff --git a/files/ja/web/javascript/reference/global_objects/symbol/matchall/index.md b/files/ja/web/javascript/reference/global_objects/symbol/matchall/index.md index 8fbeca029fbffe..21a2e610359f3d 100644 --- a/files/ja/web/javascript/reference/global_objects/symbol/matchall/index.md +++ b/files/ja/web/javascript/reference/global_objects/symbol/matchall/index.md @@ -1,35 +1,30 @@ --- title: Symbol.matchAll slug: Web/JavaScript/Reference/Global_Objects/Symbol/matchAll +l10n: + sourceCommit: 6fbdb78c1362fae31fbd545f4b2d9c51987a6bca --- {{JSRef}} -**`Symbol.matchAll`** は、文字列に対する正規表現の一致を生成するイテレーターを返します。この関数は {{jsxref("String.prototype.matchAll()")}} メソッドによって呼び出されます。 +**`Symbol.matchAll`** は静的データプロパティで、[ウェルノウンシンボル](/ja/docs/Web/JavaScript/Reference/Global_Objects/Symbol#ウェルノウンシンボル)である `Symbol.match` を表します。{{jsxref("String.prototype.matchAll()")}} メソッドは最初の引数に対して、文字列に対する現在のオブジェクトの照合を行うイテレーターを返すメソッドを、このシンボルで探します。 -{{EmbedInteractiveExample("pages/js/symbol-matchall.html","shorter")}} +詳しくは、[`RegExp.prototype[Symbol.matchAll]()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/Symbol.matchAll) および {{jsxref("String.prototype.matchAll()")}} を参照してください。 -## 説明 +{{EmbedInteractiveExample("pages/js/symbol-matchall.html")}} -このシンボルは {{jsxref("String.prototype.matchAll()")}}、特に {{jsxref("RegExp.@@matchAll", "RegExp.prototype[@@matchAll]()")}} で使用されます。以下の 2 つの例は同じ結果を返します。 +## 値 -```js -"abc".matchAll(/a/); - -/a/[Symbol.matchAll]("abc"); -``` +ウェルノウンシンボル `Symbol.matchAll` です。 -このメソッドは、{{jsxref("RegExp")}} サブクラス内の一致動作をカスタマイズするために存在します。 - -{{js_property_attributes(0,0,0)}} +{{js_property_attributes(0, 0, 0)}} ## 例 -### Symbol.matchAll を使用する +### Symbol.matchAll の使用 ```js -let re = /[0-9]+/g; -let str = "2016-01-02|2019-03-07"; +const str = "2016-01-02|2019-03-07"; const numbers = { *[Symbol.matchAll](str) { @@ -38,20 +33,23 @@ const numbers = { }; console.log(Array.from(str.matchAll(numbers))); -// Array ["2016", "01", "02", "2019", "03", "07"] +// ["2016", "01", "02", "2019", "03", "07"] ``` -その他の例については、{{jsxref("String.prototype.matchAll()")}} と {{jsxref("RegExp.@@matchAll", "RegExp.prototype[@@matchAll]()")}} を参照してください。 - -## 仕様 +## 仕様書 {{Specifications}} -## ブラウザー実装状況 +## ブラウザーの互換性 {{Compat}} ## 関連情報 +- [`Symbol.matchAll` のポリフィル (`core-js`)](https://github.com/zloirock/core-js#ecmascript-symbol) +- {{jsxref("Symbol.match")}} +- {{jsxref("Symbol.replace")}} +- {{jsxref("Symbol.search")}} +- {{jsxref("Symbol.split")}} - {{jsxref("String.prototype.matchAll()")}} -- {{jsxref("RegExp.@@matchAll", "RegExp.prototype[@@matchAll]()")}} +- [`RegExp.prototype[Symbol.matchAll]()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/Symbol.matchAll) diff --git a/files/ja/web/javascript/reference/global_objects/symbol/replace/index.md b/files/ja/web/javascript/reference/global_objects/symbol/replace/index.md index 2862353e59134c..9b55fe3d8acbad 100644 --- a/files/ja/web/javascript/reference/global_objects/symbol/replace/index.md +++ b/files/ja/web/javascript/reference/global_objects/symbol/replace/index.md @@ -1,15 +1,23 @@ --- title: Symbol.replace slug: Web/JavaScript/Reference/Global_Objects/Symbol/replace +l10n: + sourceCommit: 6fbdb78c1362fae31fbd545f4b2d9c51987a6bca --- {{JSRef}} -**`Symbol.replace`** ウェルノウンシンボルは、文字列の一致した部分を置き換えるメソッドを指定します。この関数は {{jsxref("String.prototype.replace()")}} メソッドから呼び出されます。 +**`Symbol.replace`** は静的データプロパティで、[ウェルノウンシンボル](/ja/docs/Web/JavaScript/Reference/Global_Objects/Symbol#ウェルノウンシンボル)である `Symbol.replace` を表します。{{jsxref("String.prototype.replace()")}} および {{jsxref("String.prototype.replaceAll()")}} メソッドは第 1 引数で、現在のオブジェクトに一致する部分文字列を置き換えるメソッドを、このシンボルで探します。 -詳しくは、 {{jsxref("RegExp.@@replace", "RegExp.prototype[@@replace]()")}} と {{jsxref("String.prototype.replace()")}} を参照してください。 +詳しくは、[`RegExp.prototype[Symbol.replace]()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/Symbol.replace)、{{jsxref("String.prototype.replace()")}}、{{jsxref("String.prototype.replaceAll()")}} を参照してください。 -{{EmbedInteractiveExample("pages/js/symbol-replace.html")}}{{js_property_attributes(0,0,0)}} +{{EmbedInteractiveExample("pages/js/symbol-replace.html")}} + +## 値 + +ウェルノウンシンボル `Symbol.replace` です。 + +{{js_property_attributes(0, 0, 0)}} ## 例 @@ -25,8 +33,7 @@ class CustomReplacer { } } -console.log("football".replace(new CustomReplacer("foo"))); -// expected output: "#!@?tball" +console.log("football".replace(new CustomReplacer("foo"))); // "#!@?tball" ``` ## 仕様書 @@ -39,7 +46,11 @@ console.log("football".replace(new CustomReplacer("foo"))); ## 関連情報 +- [`Symbol.replace` のポリフィル (`core-js`)](https://github.com/zloirock/core-js#ecmascript-symbol) - {{jsxref("Symbol.match")}} +- {{jsxref("Symbol.matchAll")}} - {{jsxref("Symbol.search")}} - {{jsxref("Symbol.split")}} -- {{jsxref("RegExp.@@replace", "RegExp.prototype[@@replace]()")}} +- {{jsxref("String.prototype.replace()")}} +- {{jsxref("String.prototype.replaceAll()")}} +- [`RegExp.prototype[Symbol.replace]()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/Symbol.replace)