入力したデータはサーバーへ送信・保存されません。すべての処理はお使いのブラウザ内で完結します。

正規表現テスター

正規表現パターンとテスト文字列を入力すると、マッチ結果・マッチ件数・キャプチャグループをその場で確認できます。正規表現の実行はWeb Workerへ隔離しており、実行がUIスレッドを直接ブロックすることはありません(一定時間を超えた場合は自動的に終了します)。

flags

入力例

結果

入力して「テスト実行」を押してください。

このツールでできること

  • 正規表現パターンとテスト文字列を入力して、マッチ結果をその場で確認できます
  • g/i/m/s/u/yのflagを個別に選択できます
  • マッチ箇所を安全な方式でハイライト表示します(v-htmlは使用しません)
  • 通常のキャプチャグループ・名前付きキャプチャグループの内容を確認できます
  • 正規表現の実行はWeb Workerへ隔離しており、実行がUIスレッドを直接ブロックしません(結果件数や描画処理等、その他の要因によるUI応答までは保証しません)
  • 実行に時間がかかりすぎる場合は自動的に終了し、いつでも手動でキャンセルできます
  • 不正な正規表現は分かりやすいエラーメッセージで表示します
  • 現在のパターンを正規表現リテラル形式でコピーできます

使い方

手順を見る
  1. 正規表現パターンを入力します(必要に応じてflagを選択します。既定はgのみON)
  2. テスト文字列を入力します
  3. 「テスト実行」を押します(実行中はいつでもキャンセルできます)
  4. マッチ結果・マッチ件数・キャプチャグループを確認します

こんなときに使えます

利用シーンを見る
  • 開発中に書いた正規表現が意図どおりにマッチするか、すぐに確認したいとき
  • ログや入力データから、特定のパターンが何件・どこにマッチするか確認したいとき
  • キャプチャグループ(名前付きを含む)を使った正規表現の抽出結果を目視確認したいとき
  • 複雑な正規表現を試す際に、正規表現の実行をUIスレッドから隔離した状態で試したいとき(一定時間を超えると自動的に処理を終了します)

正規表現テスターの仕組みと注意点

詳しい解説を見る

gflagの有無でマッチ件数・ハイライトがどう変わるか

gflagを付けると、テスト文字列全体からすべての非重複マッチを列挙し、すべてハイライトします。gflagを付けない場合は、JavaScriptのRegExpの仕様どおり最初の1件のみを検索します。2件目以降がある入力で1件しか表示されないのは不具合ではなく、この仕様どおりの挙動です。

マッチ位置(index)はUTF-16コードユニット単位であること

表示されるマッチ位置(index)や長さ(length)は、JavaScriptの文字列が内部的に使うUTF-16コードユニット単位のオフセットです。絵文字や一部の異体字等のサロゲートペア文字は2コードユニットとしてカウントされるため、見た目の文字数とindexが一致しない場合があります。uflagを有効にすると、正規表現エンジンはコードポイント単位で動作するようになります。

Web Workerによる実行とタイムアウト・キャンセルの仕組み

正規表現の実行(マッチ処理そのもの)は、ページのUIスレッドとは別のWeb Worker上で行われます。これにより、複雑な正規表現の実行に時間がかかった場合でも、その実行がUIスレッドを直接ブロックすることはありません。一定時間(既定3秒)を超えても処理が終わらない場合は自動的に実行を打ち切り、いつでも手動でキャンセルすることもできます。ただし、結果の表示処理や端末の性能、結果の件数など、その他の要因によるページ全体の応答性まで保証するものではありません。

名前付き・通常のキャプチャグループの見方

マッチした部分のうち、(...)で囲んだ範囲は通常のキャプチャグループとして、(?<name>...)で囲んだ範囲は名前付きキャプチャグループとして、それぞれ確認できます。対象のグループがそもそもマッチしなかった場合は「(未マッチ)」、マッチはしたが空文字列だった場合は「(空文字列)」と表示され、この2つは区別されます。

対応しているflag・対応していないflag

本ツールで選択できるflagはgimsuyの6種類です。マッチ位置のインデックス配列を返すd(hasIndices)と、ES2024で追加された集合演算構文向けのv(unicodeSets)には対応していません。

このツールは置換機能やregexデバッガではありません

本ツールはマッチの確認(件数・位置・キャプチャグループ)に特化しており、置換(replace)機能は備えていません。また、正規表現の内部的な処理過程を可視化するデバッガでもなく、入力した正規表現が危険(catastrophic backtracking等)かどうかを事前に検出・警告する機能もありません。

よくある質問

gflagをつけないと1件しかマッチしないのはなぜですか?

gflagを付けない場合、本ツールはJavaScriptのRegExpの仕様どおり最初の1件のみを検索します。2件目以降も確認したい場合はgflagを有効にしてください。

複雑な正規表現を試すとブラウザが固まりませんか?

正規表現の実行(マッチ処理そのもの)はWeb Workerへ隔離しており、その実行がページのUIスレッドを直接ブロックすることはありません。既定3秒を超えても処理が終わらない場合は自動的に打ち切られ、いつでも手動でキャンセルもできます。ただし、結果の表示処理や端末の性能等その他の要因によるページ全体の応答性まで保証するものではなく、「絶対に固まらない」ことを保証するものではありません。

名前付きキャプチャグループとは何ですか?

正規表現内で(?<name>...)のように名前を付けたキャプチャグループです。通常の番号付きキャプチャグループと同様にマッチした内容を取り出せますが、名前で参照できるため意味が分かりやすくなります。

絵文字を含む文字列でマッチ位置がずれているように見えるのはなぜですか?

表示されるマッチ位置はJavaScriptの文字列が内部的に使うUTF-16コードユニット単位のオフセットです。絵文字等のサロゲートペア文字は2コードユニットとしてカウントされるため、見た目の文字数と一致しない場合があります。

正規表現の置換(replace)はできますか?

いいえ。本ツールはマッチの確認(件数・位置・キャプチャグループ)に特化しており、置換(replace)機能は備えていません。

入力したパターンやテキストはサーバーへ送信されますか?

いいえ。正規表現のテスト処理はすべてブラウザ内(お使いのタブとWeb Worker)で完結しており、入力内容がサーバーへ送信されることはありません。