【Node.js24.x】Symbol::matchAll定数の使い方
matchAll定数の使い方について、初心者にもわかりやすく解説します。
基本的な使い方
Symbol.matchAll定数は、JavaScriptおよびNode.jsにおいて、オブジェクトが正規表現のマッチングのような検索処理をどのように実行するかを定義するための、特別な組み込み定数です。これは、JavaScriptに標準で備わっている「Well-known Symbol(よく知られたシンボル)」の一つとして位置づけられています。
この定数の主な役割は、String.prototype.matchAll()メソッドの内部的な振る舞いをカスタマイズすることにあります。String.prototype.matchAll()は、文字列の中から正規表現に一致するすべての部分を、反復可能な形式(イテレーター)で取得するためのメソッドです。
もし開発者が、独自のオブジェクトに対してString.prototype.matchAll()と同様に、マッチするすべての結果を反復的に提供する機能を持たせたい場合、そのオブジェクトのプロパティキーとしてSymbol.matchAllを使用し、関連するロジックを実装したメソッドを定義します。このメソッドは、String.prototype.matchAll()がオブジェクトに対して呼び出された際に実行され、一致する結果を順次生成するイテレーターを返します。
これにより、標準の文字列型だけでなく、開発者が作成した多様なオブジェクトに対しても、正規表現のマッチングと同様の「すべての一致を検索する」という一貫したインターフェースを提供することが可能になります。
構文(syntax)
1class MyCustomMatcher { 2 constructor(pattern) { 3 this.pattern = pattern; 4 } 5 6 [Symbol.matchAll](str) { 7 const regex = new RegExp(this.pattern, 'g'); 8 return str.matchAll(regex); 9 } 10} 11 12const text = "Node.js is awesome. Learn Node.js!"; 13const customMatcher = new MyCustomMatcher('Node.js'); 14 15for (const match of text.matchAll(customMatcher)) { 16 console.log(match[0]); 17}
引数(parameters)
引数なし
引数はありません
戻り値(return)
symbol
Symbol.matchAll は、文字列に対する正規表現のマッチング操作を定義するために使用される組み込みシンボルです。このシンボルの戻り値はシンボルであり、正規表現オブジェクトの Symbol.matchAll メソッドに渡されることで、マッチしたすべての部分文字列をイテレータとして返します。