正規表現キャラクタクラスビルダー|JS互換の[...]を組み立てて即テスト
数字・英大文字・小文字・空白など8カテゴリのトグルとカスタム文字を組み合わせ、JavaScript互換の文字クラス [...] / [^...] を生成。テスト文字列に対してgフラグで実行し、一致数とハイライトを表示するツール。
💡 このツールについて
正規表現の文字クラスは構文自体は単純でも、ブラケット内では -(範囲指定)・^(先頭での否定)・](クラス終端)・\(エスケープ)が特別な意味を持ち、書き方を一つ間違えると意図しない範囲にマッチしたり構文エラーになったりします。[a-z-] のハイフン位置、[.] のドットがリテラルになる挙動、[^abc] の否定の起点など、覚えるべき例外が地味に多いところです。
このビルダーはよく使う8カテゴリをチェックボックスにまとめ、追加したい記号は追加文字欄に入れるだけで、^ - \ ] などのメタ文字を自動でエスケープしてクラスを組み立てます。生成された式はそのままテスト文字列で実行され、一致した部分がハイライトされるので、頭の中で挙動を想像せずに目で確かめながら詰められます。コピーすればJSのソースにそのまま貼り付け可能です。
🧐 よくある質問
Q. 生成される式はどの言語で使えますか?
A. JavaScriptの RegExp 構文に準拠しています。多くの言語の正規表現エンジン(PCRE系・Python・Java等)も文字クラスの基本構文は共通なので、[0-9a-z] のような素直なクラスはそのまま流用できます。\s のような略記の解釈はエンジン差があるため、移植時は確認してください。
Q. ハイフンや記号を文字として入れたいのですが? A. 追加文字欄に直接打ち込んでください。範囲指定と誤解される位置でも自動でエスケープして文字としてクラスに含めます。
Q. 一致 [...] と除外 [^...] の違いは?
A. 一致は「指定した文字のどれか」にマッチし、除外は先頭に ^ を付けて「指定した文字以外」にマッチします。同じカテゴリ選択のまま切り替えると挙動の対比が分かります。
Q. テスト文字列の長さに制限はありますか? A. 入力欄自体に上限はありませんが、ハイライト描画はブラウザ性能に依存します。極端に長い文章では描画が重くなることがあります。
Q. 重複した文字を入れたらどうなりますか? A. すでにカテゴリや他の文字でカバー済みの文字は重複として無視されるため、クラスは冗長になりません。
📚 文字クラスの豆知識
文字クラスの中では、外側の正規表現で特別な意味を持つ多くの記号がただのリテラルに戻ります。たとえば .(任意の1文字)はクラス内では単なるドットを表し、* や + も量指定子ではなく文字そのものとして扱われます。一方でハイフンだけは話が別で、a-z のように2文字に挟まれると範囲を意味するため、文字として使いたいときはクラスの先頭・末尾に置くかエスケープする必要があります。この「クラス内では多くが無害化されるが、ハイフンとキャレットだけは要注意」という非対称さが、文字クラスを手書きするときに最もつまずきやすいポイントです。