正規表現テスターとビジュアライザー

無料のオンライン正規表現テスターおよびビジュアライザー。 JavaScript 正規表現を作成すると、それがインタラクティブな図として描画され、平易な英語で説明され、色分けされたキャプチャ グループとライブで照合されます。コードを置換、抽出、単体テスト、エクスポートします。サインアップは必要ありません。

Shehzad Munir によって構築および保守されています ·

正規表現テスターとビジュアライザー
Loading Loading Regex Tester
Share

パターンの意味を示す正規表現テスター

正規表現を 1 か所でテスト、デバッグ、理解できます。パターンを入力すると、インタラクティブな鉄道図として即座に描画され、平易な英語でトークンごとに説明され、テキストに対してライブで実行され、すべての一致とキャプチャ グループが色で強調表示されます。置換、抽出、分割、単体テストの作成、9 言語の動作コードのエクスポート、致命的なバックトラッキングに関する警告の表示などをすべてブラウザ内で実行できます。

ほとんどの正規表現テスターは、パターンが一致したかどうかのみを示します。これはその理由も示しています。入力すると、正規表現が解析され、鉄道図として描画されます。これは、図を通るすべてのパスがパターンと一致する文字列である左から右のマップ​​です。任意のボックスにカーソルを置くと、パターン内で一致する文字が点灯し、平易な英語の説明でそのピースが何をするのか正確に説明します。テキスト カーソルをパターン内で移動すると、図がそれに追従します。その下では、パターンが独自のテスト テキストに対してライブで実行され、すべての一致が強調表示され、各キャプチャ グループが独自の色で表示されるため、一致したものとその理由を同時に確認できます。

特徴

  • 任意のパターンのインタラクティブな鉄道図: ボックスにマウスを置くと正規表現で点灯します
  • すべてのトークン、グループ、数量指定子、およびルックアラウンドのわかりやすい英語の説明
  • テキスト内の色分けされたキャプチャグループによるライブマッチのハイライト表示
  • 一致をクリックすると、各グループが何をキャプチャしたかが図上で確認できます
  • カーソルに追従する構文色のパターンエディター
  • すべての JavaScript フラグ: g、i、m、s、u、v (Unicode セット) および y
  • $1、$<name>、$& および強調表示された前後のプレビューに置き換えます。
  • テンプレート、一意/並べ替え、CSV および JSON エクスポートを使用してリストに一致するものを抽出します。
  • テキストを正規表現で分割し、一致する必要がある (または一致しない) 単体テストを行う
  • JavaScript、TypeScript、Python、PHP、Java、C#、Go、Rust、Ruby のコード エクスポート
  • 互換性テーブル: Python、PCRE、Go、または Rust でどの機能が壊れるかを確認します
  • ReDoS ガード: ワーカー内で実行され、暴走パターンを停止し、ネストされた量指定子にフラグを立てます。
  • 40 個のテスト済みパターンのライブラリとサンプルから生成ビルダー
  • クリック可能なチートシート、保存されたパターン、共有可能なリンクが 100% ブラウザ内で利用可能

正規表現テスターとビジュアライザーの使い方

  1. 1

    パターンを入力してください

    正規表現を入力するか (/pattern/flags を貼り付けると自動的に分割されます)、パターン ライブラリから 1 つを選択するか、[ビルド] タブの例から正規表現を生成します。

  2. 2

    フラグを切り替えます

    g、i、m、s、u、v、または y をクリックして、一致動作を変更します。フラグにカーソルを合わせると、その動作が表示されます。

  3. 3

    視覚的な図を読む

    鉄道図内の任意のボックスにマウスを置くかクリックするか、「説明」に切り替えて、パターンの各部分の意味を確認します。

  4. 4

    テキストに対してテストする

    テキストをテスト文字列に貼り付けます。マッチとキャプチャグループはライブでハイライトを表示します。一致をクリックすると、図上の各グループの値が表示されます。

  5. 5

    置換、抽出、またはテスト

    置換、抽出、分割、および単体テストを使用して、パターンが必要なことを正確に実行することを確認します。

  6. 6

    エクスポートまたは共有

    [コード] タブから言語の作業コードをコピーするか、図を SVG/PNG としてダウンロードするか、共有リンクをコピーします。

一般的な使用例

  • 継承した複雑な正規表現を一度に 1 つのダイアグラム ボックスごとに理解する
  • 正規表現がデータと一致しない理由をデバッグする
  • 発送前に電子メール、URL、電話、またはパスワードのパターンを検証する
  • 名前付きキャプチャグループを使用してログ行からフィールドを抽出する
  • グループ参照を使用した検索と置換を作成してプレビューする
  • JavaScript 正規表現を Python、PHP、Go、または Java に移植する
  • 壊滅的なバックトラッキング (ReDoS) のパターンを確認する
  • 正規表現を視覚的な説明で教えたり学習したりできます

詳細ガイド

正規表現の鉄道図の読み方

鉄道 (構文) ダイアグラムは、電車の線路のように読み取られます。左側の点から始まり、任意のルートを最後までたどり、通過する文字が正規表現が受け入れる文字列を形成します。分岐は選択肢を意味し、下をループバックするトラックは繰り返しを意味し、上のボックスをバイパスするトラックはその部分がオプションであることを意味します。色付きのフレームはキャプチャ グループ (強調表示された一致で同じ色が使用されます)、破線のフレームはテキストを消費せずにチェックするルックアラウンド、丸薬の形をしたボックスは文字ではなく位置に一致するアンカーです。結果内の一致をクリックすると、各グループ フレームにキャプチャされた正確な値が表示されます。そのグループがスキップされた場合は「一致なし」が表示されます。

図の中で正規表現構文意味
引用されたテキストを含むボックスABC\。 \nこれらの正確な文字
「次のいずれか」をリストしたボックス[a-z0-9_]セット内の任意の 1 文字
ボックスリスト「次のいずれでもない」[^\s@]セットに含まれない任意の 1 文字
緑色のボックス (数字、単語文字など)\d \w \s .文字クラスの省略表現
錠剤の形をした箱^ $ \bアンカー: 文字ではなく位置です
トラックをブランチに分割猫|犬どちらかの代替案
トラックループを下に戻す+ * {2,5}繰り返します (ラベルに回数が表示されます)
上の線路バイパス? * {0,3}パーツはオプションです
破線のループ+? *?怠け者: できるだけ少ない回数繰り返します
色枠「#1 名前」(…) (?<名前>…)キャプチャ グループ、左から右に番号が付けられています
破線枠「その後に次のもの」(?=…) (?!…) (?<=…)先読み/後読み

Regex チートシート: 毎日使用する構文

テスターの上にある組み込みのチートシートを開き、任意のトークンをクリックしてカーソルの位置に挿入します。これらは、ほぼすべてのパターンの構成要素です。

トークン一致例
\d0~9の数字\d{4} は 2026 と一致します
\w文字、数字、またはアンダースコア\w+ は user_42 と一致します
\sホワイトスペース (スペース、タブ、改行)a\sb は「a b」と一致します
.改行を除く任意の文字a.c は abc、a-c と一致します
[abc] / [^abc]リストされた文字のいずれか / どれも[aeiou] は母音と一致します
^ と $文字列 (または m を含む行) の開始と終了^\d+$ は数字のみです
\b単語の境界\bcat\b は「連結」をスキップします
* + ?0+、1+、または 0-1 の繰り返しcolor?r は色と一致します、色
{n,m}n回からm回の繰り返しの間\d{2,4}
(…) と (?<名前>…)キャプチャグループ/名前付きグループ(?<年>\d{4})
(?:…)キャプチャせずにグループ化する(?:ab)+
\1, \k<名前>前のグループと同じテキスト(\w)\1 は「ll」と一致します
(?=…) (?!…)続く / 続かない\d+(?=px)
(?<=…) (?<!…)が前にある / が前にない(?<=\$)\d+

正規表現フラグの説明

フラグはパターン全体の動作を変更します。ワンクリックでそれらを切り替えます。フラグにカーソルを合わせると、その動作が表示されます。

フラグ名前効果
gグローバル最初の一致で停止するのではなく、すべての一致を検索します
i大文字と小文字を区別しない文字は大文字または小文字で一致します
m複数行^ と $ は各行の先頭/末尾で一致します
sドットオール。改行にも一致します
uユニコード絵文字とアストラル文字を 1 つの文字として扱います。 \p{…} を有効にする
vユニコードセットあなたが行うすべてのことと、[\p{L}--[a-z]] のような設定操作
y粘着性のある各一致は、前の一致が終了した場所から正確に開始する必要があります

置換、抽出、分割、単体テストを 1 か所で実行

「置換」に切り替えて、$1、$<name>、$&、および $$ トークンを使用した検索と置換ルールを構築します。結果では、挿入されたすべての部分が強調表示されるため、実際のデータで実行する前に確認できます。 Extract は、一意の並べ替えオプションとスプレッドシート用の CSV または JSON エクスポートを備えたテンプレート (たとえば、2 つのグループを交換する $2、$1) を使用して、すべての一致をリストに変換します。 Split は、キャプチャされた区切り文字を含め、String.split() が返す内容を正確に表示します。単体テストを使用すると、動作を特定できます。一致する必要がある文字列、完全に一致する必要がある文字列、または一致してはいけない文字列を追加し、キーストロークごとに合格/失敗カウントが更新されるため、パターンに少し変更を加えても、すでに修正したケースが静かに壊れることはありません。

テキストからすべてのメールアドレスを抽出しますテキストの 2 つのバージョンを並べて比較するURL クエリ文字列をエンコードまたはデコードする

壊滅的なバックトラッキング (ReDoS) とテスターがどのように保護するか

(a+)+$ や (\w+\s?)*$ などの一部のパターンは、繰り返し間で指数関数的にさまざまな方法で分割できます。入力がほぼ一致すると、エンジンはあらゆる組み合わせを試行し、ブラウザのタブがフリーズしたり、サーバーがダウンしたりする可能性があります。これは、ReDoS (正規表現によるサービス拒否) として知られる脆弱性です。このテスターは、2 秒の制限付きで別の Web ワーカーですべてのパターンを実行します。エンジンがスタックした場合は停止し、ページがフリーズする代わりに明確な警告が表示されます。また、組み込みのリンターは、ドメイン名内のエスケープされていないドット、[A-z] 範囲、空の代替などのその他のよくある間違いとともに、危険な形状 (内部も繰り返されるグループの繰り返し) に出荷前にフラグを立てます。

Python、PHP、Java、C#、Go、Rust、Ruby で同じ正規表現を使用する

テスターはブラウザー独自の JavaScript (ECMAScript) 正規表現エンジンを実行するため、結果は JavaScript、TypeScript、Node.js に対して正確になります。 [コード] タブでは、パターンが他の 8 つの言語用にすぐに貼り付けられるコードに変換され、異なる部分が変換されます。名前付きグループは Python の場合は (?P<name>…) になり、フラグは C# の場合は RegexOptions になり、Go と Rust の場合はインライン (?i) になり、置換トークンは言語ごとに書き換えられます。互換性テーブルには、パターンが使用するすべての機能と、各エンジンがそれをサポートするかどうかがリストされます。

特徴JavaScriptパイソン再PCRE/PHPJava / .NETゴー / ラスト
先読み (?= )はいはいはいはいNo
後読み (?<= )任意の長さ固定長固定/制限付き有界 / 任意No
後方参照 \1はいはいはいはいNo
名前付きグループ(?<n>…)(?P<n>…)(?<n>…)(?<n>…)(?P<n>…) / (?<n>…)
ユニコード \p{L}君の旗を持っていいえ (正規表現モジュール)はいはい / 部分的部分的 / はい
\d は非 ASCII 数字と一致しますNoはいNoいいえ / はいいいえ / はい

JSON から TypeScript 型を生成するcron 式を作成して説明する

テスト済みのパターンから開始するか、例からパターンを生成します

パターン ライブラリには 40 個の既製のテスト済み表現が保持されており、それぞれにサンプル テキストが含まれています: 電子メール、URL、IPv4 と IPv6、E.164 と米国の電話番号、強力なパスワード、UUID、セマンティック バージョン、英国の郵便番号、ISO と DD/MM/YYYY 日付、価格、ハッシュタグ、@メンション、マークダウン リンク、HTML タグ、Apache/Nginx ログ行、重複単語など。データから開始したい場合は、いくつかの例をビルドに貼り付けます。ジェネレーターは、文字、数字、記号を ^\d{4}-\d{2}-\d{2}$ などのパターンにグループ化し、調整できます。 Build では、リテラル テキストをエスケープすることもできるので、. * ? ( ) $ は完全に一致します。

設計によりプライベート化

すべてはブラウザの JavaScript エンジンでローカルに実行されます。入力した内容はサーバーにアップロード、記録、保存されません。最後のセッションはこのブラウザに保存されるため、中断したところから再開でき、保存されたパターンはデバイスに残り、共有リンクには URL 自体の中にパターン、テキスト、テストが含まれるため、当社側には何も保存されません。

よくある質問

このテスターはどの正規表現フレーバーを使用しますか?

これはブラウザ独自の JavaScript (ECMAScript) 正規表現エンジンを使用します。これは、Chrome、Firefox、Safari、Node.js が使用するものと同じもので、フラグ g、i、m、s、u、v、y が含まれます。結果は JavaScript と TypeScript について正確です。 「コード」タブでは、パターンを他の言語に変換します。

キャプチャ グループをテストできますか?

はい。すべての一致には、その位置と、番号と名前が付けられた各グループの値がリストされます。グループはテキスト内で色で強調表示され、一致をクリックすると、各グループのキャプチャされた値が図上に表示されます。

置換プレビューはどのように機能しますか?

番号付きグループの場合は $1、$2、名前付きグループの場合は $<name>、一致全体の場合は $&、リテラルのドル記号の場合は $$ を使用して置換を入力します。結果はライブで更新され、String.replace() が生成するのとまったく同じように、挿入されたすべての部分が強調表示されます。

私のテストデータは非公開ですか?

はい。正規表現は完全にブラウザのローカル Web ワーカーで実行されます。パターンとテスト文字列がアップロードされることはありません。保存されたパターンはこのブラウザ内にのみ残ります。

テキストに対して正規表現をテストするにはどうすればよいですか?

パターンを入力し、サンプル テキストを貼り付けます。一致はライブで強調表示され、キャプチャ グループが表示されるため、正規表現が一致するものを正確に確認し、即座に調整することができます。

私の正規表現がどこにも一致しないのはなぜですか?

一般的な原因は、フラグの欠落 (i は case、m so ^ と $ は行ごとに機能し、s so . は改行をまたぐ)、エスケープされていない特殊文字、または別の言語の構文です。図にカーソルを合わせると、各部分が何を期待しているのかが表示され、わかりやすい英語の説明が表示され、パターンの下にある警告が確認されます。

JavaScript や他のフレーバーに対して同じパターンをテストできますか?

マッチングは JavaScript エンジンで実行され、[コード] タブでは Python、PHP、Java、C#、Go、Rust、Ruby 用の実用的なコードが生成され、名前付きグループ、フラグ、置換構文が変換されます。互換性テーブルには、後読みや後方参照などの機能が各エンジンでサポートされていないことが示されています。

正規表現ビジュアライザーまたは鉄道図とは何ですか?

正規表現ビジュアライザは、正規表現を鉄道図として描画します。つまり、分岐が選択肢、ループが繰り返し、バイパスがオプションの部分である左から右にたどるトラックです。これにより、生の構文よりも長いパターンがはるかに読みやすくなります。ここでは、図はインタラクティブです。ボックスにマウスを置くと、パターン内のボックスが強調表示され、わかりやすい英語の説明が表示されます。

正規表現図をダウンロードできますか?

はい。図の上にある SVG または PNG ボタンを使用して、ドキュメント、コード レビュー、または教材としてダウンロードします。ズームと幅に合わせるコントロールは、長いパターンに役立ちます。

壊滅的なバックトラッキング (ReDoS) とは何ですか?

これは、(a+)+$ のようなパターンが、ネストされた繰り返し間で同じテキストをさまざまな方法で急激に分割する場合に発生するため、ニアミス入力によってエンジンが数秒または数時間実行されることになります。このテスターは、Web ワーカーでパターンを実行し、2 秒後にパターンを停止し、ネストされた量指定子についてデプロイ前に警告します。

JavaScript 正規表現を Python に変換するにはどうすればよいですか?

「コード」タブを開き、「Python」を選択します。このツールは、(?<name>…) を (?P<name>…) に、\k<name> を (?P=name) に書き換え、i、m、および s フラグを re.IGNORECASE、re.MULTILINE、および re.DOTALL にマップし、$1 の置換を \g<1> に変換します。 Python の組み込み re モジュールは \p{…} Unicode プロパティをサポートしていないことに注意してください。

正規表現フラグ g、i、m、s、u、v、y は何を意味しますか?

g はすべての一致を検索し、i は大文字と小文字を無視します。m は ^ と $ をすべての行で機能させます。s は let します。改行に一致します。u は完全な Unicode プロパティと \p{…} プロパティを有効にします。v は Unicode 集合演算を追加します。y (スティッキー) は、最後の一致が終了した正確な位置でのみ一致します。

貪欲量指定子と遅延量指定子の違いは何ですか?

貪欲な量指定子 (*、+、{n,m}) は可能な限り一致し、必要に応じて文字を返します。遅延型 (*?、+?、{n,m}?) は一致を最小限に抑え、必要な場合にのみ拡張します。たとえば、<.+> はタグの行全体に一致しますが、<.+?> は一度に 1 つのタグに一致します。この図では、遅延ループが破線で描かれています。

先読みと後読みはどのように機能するのでしょうか?

現在の位置の後 (?=…) または前 (?<=…) を照合に含めずにチェックします。否定形 (?!…) と (?<!…) では、テキストが存在しないことが必要です。たとえば、\d+(?=px) は「12px」の 12 と一致します。 JavaScript は、任意の長さの後読みをサポートします。

このツールは正規表現を生成できますか?

はい。いくつかの例を [ビルド] タブに貼り付けると、文字、数字、記号を一般化してパターンが提案されます (たとえば、2026-09-24 は \d{4}-\d{2}-\d{2} になります)。電子メール、URL、IP アドレス、電話番号、日付、パスワードのルールなど、ライブラリ内の 40 のテスト済みパターンから開始することもできます。

正規表現の単体テストを作成するにはどうすればよいですか?

[単体テスト] タブを開き、一致する文字列、完全に一致する文字列、または一致しない文字列を追加します。すべてのテストはキーストロークごとに成功/失敗カウントとともに再実行され、行のインポートによってテスト テキストの各行がテスト ケースに変換されます。

正規表現を誰かと共有できますか?

[共有リンク] をクリックして、正確なパターン、フラグ、テスト テキスト、置換テスト、および単体テストを再度開く URL をコピーします。すべてはリンク自体の内部でエンコードされるため、サーバーには何も保存されません。

これは regex101 や RegExr とどう違うのですか?

regex101 を使用すると、PCRE、Python、Java などの複数のエンジンを切り替えることができますが、このツールでは切り替えることができません。このテスターは、コードが実際に実行される JavaScript エンジンに焦点を当て、インタラクティブな鉄道図、単体テスト、ReDoS 保護、9 言語のコード エクスポート、および互換性テーブルを追加します。アカウントやアップロードは必要ありません。

日記より

All articles →