正規表現チェッカー&検証

正規表現チェッカー&検証エンジン仕様

正規表現のパターン一致、キャプチャグループ、構文トークン解説、置換処理をリアルタイムに検証・デバッグ・最適化します。

正規表現エンジン種別
改行コード
クイックプリセット
正規表現デバッグワークベンチ
//gm
クイックパレット
Reach out to [email protected]#1 or [email protected]#2 for inquiries. Invalid addresses like john..doe@bad#3_domain or @missing-user.org should be ignored. Admin contact: [email protected]#4.
マッチ詳細一覧総マッチ件数: 4
単語全体に一致 #1: "[email protected]"位置:: [13:32] (19 文字)
<user>: "support"<domain>: "toolsaa.com"
単語全体に一致 #2: "[email protected]"位置:: [36:66] (30 文字)
<user>: "sales.dept"<domain>: "enterprise-cloud.io"
単語全体に一致 #3: "john..doe@bad"位置:: [105:118] (13 文字)
<user>: "john..doe"<domain>: "bad"
単語全体に一致 #4: "[email protected]"位置:: [181:212] (31 文字)
<user>: "sec-ops"<domain>: "datacenter.internal.net"
マッチ数
4
キャプチャ数
2 グループ
ReDoS脆弱性ステータス
安全(線形実行)

完全クライアントサイド実行

すべての正規表現マッチングおよび構文解析はブラウザのメモリ内でのみ高速実行されます。

サーバー送信ゼロの完全プライバシー

検証テキストや抽出データは外部サーバーへ一切送信されず、端末内でのみ安全に完結します。

プロダクション即応コード出力

各主要プログラミング言語(JavaScript, Python, Go, Rust等)に最適化されたエスケープ済みコードを即座に出力可能です。

技術リファレンス・アーキテクチャガイド

正規表現テスター・検証ガイド — 技術リファレンス

正規表現をリアルタイムに検証・デバッグ・最適化。パターン一致の検出、キャプチャグループの抽出、構文トークン解析、文字列置換シミュレーションを安全かつ高速に実行できます。

正規表現テスター・検証ガイド — 技術リファレンス — クライアントサイド完全ローカル実行アーキテクチャ図
正規表現テスター・検証ガイド — 技術リファレンス — クライアントサイド完全ローカル実行アーキテクチャ図

主要パラメータと設定項目

正規表現パターンRegExp構文文字列

ECMAScript(JavaScript)正規表現仕様に準拠したパターン文字列。文字クラス、アンカー、量指定子、および名前付き・番号付きキャプチャグループを含めることができます。

初期値: /(?<user>[a-zA-Z0-9._%+-]+)@(?<domain>[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})/gm
正規表現実行フラグフラグ修飾子文字列

正規表現の実行時挙動を制御するコンパイル修飾子:g(全域検索・グローバルマッチ)、i(大文字・小文字の区別なし)、m(複数行モード:^と$を行単位で適用)、s(dotAllモード:ドットが改行文字にも一致)、u(Unicodeコードポイント完全対応)、y(lastIndexに基づくsticky一致)。

初期値: gm
テスト対象テキスト評価対象テキスト本文

正規表現エンジンが一致箇所の走査、キャプチャグループの抽出、および処理パフォーマンスのベンチマークを実行する複数行の入力テキスト本文。

初期値: sample text corpus
置換テンプレートパターン置換文字列

文字列置換用のテンプレート構文。位置指定の後方参照($1, $2)、名前付きキャプチャグループ識別子($<name>)、完全一致テキスト($&)、一致箇所の直前・直後スライス($`、$')をサポートします。

初期値: $<user> at $<domain>

現場のベストプラクティス・実践Tips

排他的トークンによる破滅的バックトラック(ReDoS)の防止

(a+)+ や (.*a)+ のようなネストされた非限定的な量指定子は、不一致となる入力に対して非決定性有限オートマトン(NFA)エンジンが O(2^n) の指数関数的な状態探索を行う原因となります。反復内部で重複する文字クラスを徹底的に排除し、アトミックグループ化、所有格数量子、または [^a]*a のような厳密な排他文字クラス(否定文字セット)への置き換えを行ってください。

gフラグ・yフラグ使用時の内部状態 lastIndex の挙動に注意

RegExpインスタンスで /g(グローバル)または /y(sticky)フラグを有効にすると、JavaScriptネイティブエンジンは内部の lastIndex ポインタを保持し、一致のたびに次の走査開始位置へと進めます。そのため、同一文字列に対して regex.test() を連続実行すると、事前に明示的に regex.lastIndex = 0 で初期化しない限り、true と false が交互に返される予期せぬ挙動が発生します。

サロゲートペアや絵文字の処理にはUnicodeフラグ(u または v)を必須化

/u フラグのない標準のJavaScript正規表現は、4バイトのUTF-16サロゲートペアを2つの独立した2バイトコード単位として処理します。そのため、/u または /v フラグを有効化しない限り、ドット(.)は「🚀」(\uD83D\uDE80)のような1文字の絵文字と一致せず、[\u{1F600}-\u{1F64F}] のようなコードポイント範囲指定も構文エラー(SyntaxError)となります。

改行処理における複数行フラグ(m)とdotAllフラグ(s)の明確な区別

/m フラグは、アンカー記号 ^ および $ の対象を文書全体の先頭・末尾から「各行の先頭・末尾」へ再定義するだけの機能です。ドットワイルドカード(.)が改行文字(\n や \r)に一致するようになるわけではありません。改行をまたいでドットを任意の文字に一致させたい場合は、明示的に /s(dotAll)フラグを有効にする必要があります。

よくある落とし穴とトラブルシューティング

⚠️貪欲な量指定子の誤用により複数のXML/HTMLブロックが一括で捕捉される

標準の量指定子(*、+、{n,})はデフォルトで「最長一致(貪欲)」として動作し、可能な限り最長の一致を消費します。最短の区切り文字で停止させるには、疑問符を追加して「非貪欲(最短一致)量指定子」に変更するか(例: <div.*> を <div.*?> へ変更)、否定文字クラス(例: <[^>]*>)を利用して区切り文字の越境を防止してください。

⚠️スラッシュ区切り文字や予約済みメタ文字のエスケープ漏れによる構文エラー

正規表現で特別な意味を持つメタ文字(\、^、$、.、|、?、*、+、(、)、[、]、{、})をリテラル文字として一致させるには、直前にバックスラッシュを置いてエスケープする必要があります。また、new RegExp() を用いて文字列から動的にパターンを構築する場合は、JavaScriptソースコード上で二重エスケープ(\\)が必要となる点に注意してください。

⚠️否定先読み (?!pattern) と否定文字クラス [^chars] の混同によるマッチ失敗

否定文字クラス [^abc] は、「a」「b」「c」以外の『任意の1文字』を実際に消費して一致します。一方、否定先読みアサーション (?!abc) は文字を一切消費しない「幅ゼロのアサーション」であり、後続の文字列が「abc」という並びでないことだけを検証します。文字の消費有無を意識して使い分けてください。

よくある質問 (FAQ)

ReDoS(破滅的バックトラック)脆弱性を生じさせずに正規表現を安全に検証するには?▼

破滅的バックトラックは、(a+)+$ や (x|y+)* のように重複したサブパターンを持つ入れ子の量指定子に対して不一致のテキストを評価した際、NFA正規表現エンジンが O(2^n) の指数関数的な計算量を消費することで発生します。これを防ぐには、繰り返されるグループ同士を相互排他的に設計し、.* のような広範なワイルドカードを [^\n,]+ 等の厳密な排他文字クラスに置き換えた上で、一致しない境界入力値を与えて実行時間をベンチマーク計測することが重要です。

正規表現の貪欲(最長一致)・非貪欲(最短一致)・強欲(所有格)量指定子の違いは何ですか?▼

貪欲量指定子(*、+、{min,max})は可能な限り最長のテキストを消費し、後続パターンが不一致の場合に1文字ずつバックトラック(後退)します。非貪欲(最短一致)量指定子(*?、+?、{min,max}?)は可能な限り最短のテキストを消費し、必要に応じて1文字ずつ範囲を広げます。強欲(所有格)量指定子(*+、++、{min,max}+、PCREやJavaでサポート)は最長一致した文字を完全に固定して一切バックトラックしないため、後続が不一致の場合は即座にマッチ失敗となり、ReDoSを防止できます。

同一の文字列に対して regex.test() を実行すると true と false が交互に返されるのはなぜですか?▼

JavaScriptにおいて正規表現が /g(グローバル)または /y(sticky)フラグ付きでコンパイルされている場合、RegExpオブジェクトはステートフルとなり、最後に成功した一致箇所の直後の文字位置で内部プロパティ lastIndex を更新・保持します。2回目の呼び出し時は先頭ではなく lastIndex から検索が開始され、末尾に到達すると lastIndex が 0 にリセットされて false が返されます。連続実行する場合は、呼び出し前に必ず regexObject.lastIndex = 0 でリセットしてください。

正規表現で改行文字(\n や \r)を跨いで複数行全体を一致させるにはどうすればよいですか?▼

改行をまたいで一致させるには、ECMAScript 2018以降やPythonなどのモダン正規表現エンジンでサポートされている dotAll フラグ(/s)を有効化します。これによりワイルドカードであるドット(.)が改行文字(\n、\r)にも一致するようになります。/s フラグがサポートされていない旧環境では、空白文字と非空白文字の補集合を表す [\s\S] または [\d\D] を使用することで、すべての改行を含む任意の文字に一致させることができます。

キャプチャグループと非キャプチャグループ((?:...))の違いは何ですか?▼

(pattern) で定義されるキャプチャグループは、一致した部分文字列をメモリ内に保持し、インデックス番号付きの後方参照($1, $2, ...)を割り当てて一致結果配列からアクセス可能にします。一方、(?:pattern) で定義される非キャプチャグループは、メモリの割り当てや結果配列への格納を行わずにグループ化や量指定子・選択(|)の適用のみを行うため、メモリ消費を抑えパース性能を向上させることができます。

関連開発者ツール

全ツール一覧 →
サブネット計算・CIDR範囲開発者ツール

IPv4サブネットマスク、CIDRネットワーク範囲、利用可能ホストIP、ブロードキャストアドレスを計算。ビット単位バイナリ検証、VLSM計画、クラウドVPC規則に対応。

ツールを開く→
2進数加算・減算計算機開発者ツール

2進数の加算・減算をリアルタイム計算。ステップごとのキャリー伝播(繰り上がり)、2の補数による符号付き演算、論理ゲート信号、16進数への相互変換に対応。

ツールを開く→
robots.txt 構文検証開発者ツール

RFC 9309規格に準拠したrobots.txtの構文検証ツール。User-Agent別のクロール許可判定、Disallowパスのデバッグ、XMLサイトマップ宣言の検査をブラウザ上で即座に実行。

ツールを開く→
Markdown HTML 変換開発者ツール

Markdown をクリーンで本番品質の HTML コードへ瞬時にリアルタイム変換。GFM テーブル、コードハイライト、XSS サニタイズ、リッチテキストコピー、完全なドキュメント出力を完備。

ツールを開く→
Cron式パーサー・構文検証開発者ツール

Cron式を直感的な実行スケジュールに高精度変換。タイムゾーン別の次回実行予定日時の算出、crontab構文の妥当性検証、将来のトリガー予測を完全ローカルで実行します。

ツールを開く→
GraphQL TS型生成開発者ツール

GraphQL スキーマ(SDL)やクエリから TypeScript の型定義、インターフェース、Enum、リゾルバーを自動生成。設定不要・サーバー送信なしでブラウザ上で即座にコード生成できます。

ツールを開く→