正規表現テスター
正規表現とテスト用テキストを同じ画面に並べ、ルールを書きながらフラグを調整するだけで、どこに当たっているかが一目で分かります。ヒット位置、キャプチャグループ、置換プレビュー、分割結果、ReDoS のリスクが連動して更新され、すべてブラウザ内で処理されます。
- 構文エラーは列番号付きでリアルタイムに表示し、知らない間に空マッチへ変わるのを防ぎます
- g・i・m・s・u・y・d の 7 つのフラグを自由に組み合わせ、JavaScript 正規表現の挙動に合わせて検証できます
- マッチハイライト、キャプチャグループ、置換プレビュー、分割結果が同時に更新されます
- よく使うテンプレートと ReDoS チェックを内蔵し、安全な正規表現に整えてから多言語コードを出力します
- パターン、フラグ、テスト文を共有リンクとして保存でき、レビューやペアでの作業もスムーズです
まだヒットがありません。パターンまたはフラグを調整してください。
概要
単に test() を実行するだけのツールではありません。パターン編集、ヒット位置、置換プレビュー、分割結果、パフォーマンスリスクを横並びで確認し、最初から正しいルールを書けるよう支援します。
- 01
構文エラーを即時に位置表示
regexpp で解析し、エラー内容と列番号を入力欄の下にすぐ表示します。サイレントな空マッチを防ぎます。
- 02
すべてのフラグを揃える
g、i、m、s、u、y、d の 7 つを名称と説明付きで切り替えできるため、略号の意味を覚え直す必要はありません。
- 03
ヒットの可視化と詳細
テスト用テキスト内のすべてのヒットをハイライトし、位置、長さ、キャプチャグループ、名前付きグループを順番に確認できます。
- 04
置換と分割をプレビュー
同じ正規表現で置換と split の両方を試せるため、ログ、フィールド、URL の調整時にツールを切り替えずに済みます。
- 05
ReDoS リスクを通知
バックグラウンドで recheck を実行し、潜在的な破滅的バックトラックを検出すると攻撃例とともに表示します。
- 06
多言語コード出力
現在の正規表現とフラグを JavaScript、TypeScript、Python、Go、PHP、Java のコードに変換し、そのままプロジェクトへ貼り付けできます。
- 07
共有リンク
パターン、フラグ、置換、テスト用テキストを URL のハッシュに圧縮し、同じ作業場を別のタブやチームメイトと共有できます。
- 08
完全ローカル処理
解析、マッチング、置換、ReDoS 検査はすべてブラウザ内で実行され、内容はサーバーへ送信されません。
使い方
正規表現を書き、ヒットを確認し、フラグを調整し、リテラル・コード・共有リンクのいずれかで持ち帰る、という流れがこの画面で完結します。
- 01
上部のパターン欄に正規表現を入力します。エラーがある場合は原因と列番号がすぐ下に表示されます。
- 02
フラグ列で必要なフラグを切り替えます。g、i、m はよく組み合わせて使われます。
- 03
テスト用テキストを下のエリアに貼り付けると、ヒットが自動でハイライトされます。
- 04
右側のマッチ一覧で位置、長さ、キャプチャグループを確認します。
- 05
書き換えたいときは置換タブに切り替え、$1、$<name>、$& などを使って再構成します。
- 06
右上のパフォーマンス表示を確認し、ReDoS のリスクが出た場合は量詞を書き直します。
- 07
最後にリテラルをコピーコード出力共有リンクから結果を持ち出します。
詳細
案件ごとに重視する指標は違いますが、マッチ件数、キャプチャ、パフォーマンス、コード出力をひとつの画面で見比べられます。
- g フラグは全体を走査するため、全部で何件ヒットしたかを確認するときの基本になります。
- i フラグは英字の大文字小文字を無視したいキーワード、ブランド名、ログ検索などで便利です。
- m フラグは ^ と $ を各行の端に対応させるため、ログ、Markdown 見出し、行単位のテキストに向きます。
- s フラグは . を改行にも一致させるため、複数行の HTML やコメントを扱うときに役立ちます。
- u フラグは Unicode モードを有効にし、Emoji、CJK 文字、\u{...} の取り扱いを安定させます。
- y フラグは lastIndex の位置から一致を始めるため、字句解析やチャンク走査に適しています。
- d フラグは各キャプチャの開始・終了インデックスを返すため、UI 上での厳密なハイライトに役立ちます。
- マッチの詳細は位置と長さが揃って表示され、フィールドの抜き出しを素早く検証できます。
- 置換パネルは $1、$<name>、$&、$$ をサポートし、内容の再構成に使えます。
- 分割結果は JSON 配列として表示され、区切り文字の挙動を確認しやすくなります。
- ReDoS 検査は非同期で行われ、危険なパターンを検出すると攻撃例を提示します。
- 出力コードは各言語のリテラル規則に従って必要な分だけエスケープし、そのまま利用できます。
活用シーン
正規表現の難しさは発想ではなく、何度も貼り直したり、ツールを行き来したり、運用後に空ヒットだったと気づくところにあります。
-
API・ログのフィールド抽出
アクセスログや API レスポンスから IP、ユーザー ID、ステータス、タイムスタンプをキャプチャで取り出します。
-
入力バリデーション
メール、電話番号、社内コードなどのバリデーションを書く前に、実サンプルでヒットを確認できます。
-
コンテンツの一括置換
ブランド名や URL、パス、機微フィールドを置換する前に、命中範囲を見比べて安全に運用できます。
-
旧 SDK・API の移行
バージョン違いの呼び出し方や設定キーをキャプチャで保持しつつ、新仕様へ書き換えます。
-
ドキュメント整理
余分な空行の削除、リンクの形式統一、見出しの抽出など、ノートを別ツールへ取り込む前の整形に向きます。
-
セキュリティレビュー
トークン、メール、電話番号などの漏えいリスクを洗い出し、公開前にマスクや差し替えを行えます。
-
設定・スクリプトのデバッグ
Nginx、CI、Webhook、IDE などで使う正規表現を、まず手元で確かめてから貼り付けられます。
-
学習と社内共有
ヒット位置と分組を順に確認できるため、後方参照や名前付きキャプチャの説明に向いています。
使い方のヒント
正規表現は動いているように見える状態でも危ういことが多く、いくつかの小さな心得が信頼性を高めます。
- まずは短いサンプルで挙動を確認し、その後で全文に適用すると境界の問題に早く気づけます。
- 量詞の後にはアンカーや境界を置き、意図せず後ろまで貪欲に取り込まないよう注意します。
- (a+)+ のように量詞が重なる書き方を見かけたら、ReDoS の通知を確認し、必要に応じて書き直します。
- 言語ごとにバックスラッシュ、後方参照、名前付きキャプチャの扱いが異なるため、出力コードは目的言語で再確認します。
- 破壊的な置換、特に g フラグを伴う場合は、原文のバックアップを別途残しておきます。
- 共有リンクにはテスト用テキストが含まれるため、機密情報を含む場合は事前にマスクや差し替えを行います。
制限事項
このツールは JavaScript の正規表現に沿って動作するため、すべてのエンジンの最終的な挙動と完全に一致するわけではありません。
- 解析と実行はブラウザの RegExp に依存しており、PCRE、Python、Go、Java とは細部で異なる場合があります。
- 出力コードは必要なエスケープのみを行うため、複雑な正規表現は目的言語で再検証してください。
- \b は ASCII の語境界に基づくため、CJK や全角文字では期待通りに働かない場合があります。代わりに先読み・後読みの利用を検討してください。
- ReDoS 検査には時間予算があり、複雑な正規表現では判定が出ないことがあります。重要な用途では人手の確認も推奨します。
- UI 上では最大 1000 件のマッチを表示します。総件数の集計は正確ですが、それ以上のヒットは一覧化されません。
- 本ツールは実環境でのパフォーマンス試験の代わりにはなりません。
よくある質問
フラグ、キャプチャ、パフォーマンス、コード出力について、よく挙がる質問をまとめました。
ここで動く正規表現が Python や Go では動きません。
エンジンによって後方参照、Unicode クラス、先読み・後読み、名前付きキャプチャの扱いが異なります。本ツールは JavaScript RegExp に準拠しているため、出力コードは目的言語で再テストしてください。
g を有効にしているのに一部のヒットしか表示されません。
UI のパフォーマンス維持のため、マッチ一覧は先頭 1000 件のみ表示します。総件数の数値は正確で、それ以上の一覧表示が省略されているだけです。
u や v はいつ有効にすべきですか?
Unicode クラス、\u{...}、Emoji、\p{...} を含む正規表現では u を有効にしてください。本ツールは u を直接提供します。ブラウザが v(Unicode Sets)をサポートする場合は、出力コードを手動で調整してください。
ReDoS 表示が確認中のままになることがあります。
recheck には時間予算があるため、複雑な正規表現では時間内に判定が完了しないことがあります。書き換えを簡素化するか、より小さなサンプルで試してください。
$1、$<name>、$& はどう使いますか?
$& はマッチ全体、$1、$2 は番号付きキャプチャ、$<name> は名前付きキャプチャを参照します。文字として $ を残したい場合は $$ と書きます。
共有リンクにはテスト用テキストも含まれますか?
はい。パターン、フラグ、置換、テスト用テキストが lz-string で圧縮されて URL ハッシュに含まれます。機密情報は事前にマスクしてください。
幅 0 のマッチで止まってしまうのを防げますか?
^、先読み・後読み、\b などの幅 0 のマッチは、ある書き方では繰り返し発火します。本ツールは検出して 1 文字進めるため、画面の応答性を保ちます。
どの程度の長さまで扱えますか?
数万〜十数万文字までは問題なく動きます。それ以上の長文は分割して処理することをおすすめします。ハイライト処理は長さに比例して重くなります。
g を有効にしても 1 件しか置換されません。
置換は現在のフラグで実行されます。g が有効か確認してください。1 件しかヒットしない場合は、量詞やアンカーを調整して範囲を広げてください。
名前付きキャプチャに対応していますか?
はい。(?<name>...) は名前付きグループ欄に表示され、置換でも $<name> として参照できます。
正規表現はサーバーに送信されますか?
送信されません。解析、マッチング、置換、ReDoS 検査はすべて現在のブラウザ内で実行されます。
よく使う正規表現を保存できますか?
共有リンクをコピーを使って、現在のパターン、フラグ、テスト用テキストを URL に圧縮し、ブックマークやノートに残せます。
関連ツール
正規表現を整えたあとは、テキスト系の各ツールで置換、行処理、整理、長さの確認をそのまま進められます。