GitHubmatch-indexという正規表現の補助JavaScriptライブラリを書きました。ABC"という文字列から"ABC"という文字列とその位置(index)を取ろうとすると、非常に面倒な書き方をする必要があります。文字列は取れますが、indexを取ることができません。これをやるにはmatchではなく、gフラグ付き正規表現とexecやreplaceを使ってやる必要があります。これを直感的に行うString.prototype.matchAllというProposalも存在しています。String.prototype.matchAll今回はこのmatchAll的なものと、キャプチャした内容と位置を取得出来るmatchCaptureGroupAllをもったmatch-indexというライブラリを書きました。match-indexでインストールできます。2つの関数を持ってます。MatchCaptureGroup(と)で囲まれた内容を配列で返してくれます。開始位置}]配列の中身はtextとindexという感じになっています。MatchAllGroup一方、matchAll()はString.prototype.matchAllと似たような感じですが、キャプチャに関する内容をcaptureGroupsに保持する拡張をしています。*/問題点これは実装上の問題で、多分正規表現ではなくパーサコンビネータとかで実装すればどうにかできると思いますが、match-indexはネストしたキャプチャを正確に扱えないバグがあります。次の例は(st(\d?))がネストしているため、indexの値がおかしくなっています。capture.このライブラリはtextlint-rule-preset-JTF-styleを--fixでの自動修正に対応に対応するときに、もっと直感的にマッチしてその位置を取得する方法が欲しくて作りました。これにより書く効率は上がって、つねにgフラグで扱われるので、一度マッチしても最後までちゃんと繰り返しマッチするようになって、全てのエラーを出せるようになったので書いてよかったと思います。タグ:JavaScriptRegExplibraryお知らせ欄JavaScriptに関する最新情報は週一でJSer.infoを更新しています。efcl/efcl.github.ioからご意見下さい関連記事コメントを。