正規表現テスター

正規表現のテストとマッチング結果を視覚化

正規表現パターンをリアルタイムでテストし、マッチング箇所を視覚的に確認できます。 フラグ設定やマッチ詳細の確認も可能な開発者向けツールです。

正規表現の設定

//

マッチ結果(一致した箇所)

入力待ち...

一致する箇所がありません

合計マッチ数0
文字列の長さ0
パターンの長さ0
有効なフラグg

正規表現 クイックリファレンス

文字

.任意の1文字
\d数字 (0-9)
\w単語構成文字
\s空白文字

量指定子(繰り返し)

*0回以上の繰り返し
+1回以上の繰り返し
?0回または1回
{n}ちょうどn回の繰り返し

アンカー(位置指定)

^行の先頭
$行の末尾
\b単語の境界
|いずれか(OR)

正規表現テスターの活用ガイド

正規表現(Regular Expression)は、文字列のパターンを表現する強力なツールです。本テスターを使用することで、複雑な正規表現の開発とデバッグを効率的に行えます。JavaScriptの正規表現エンジンをベースに、リアルタイムで結果を表示します。

1

正規表現パターンの入力

「Pattern」入力欄に正規表現を記述します。デリミタ(/ /)の間にパターンを書き、右側にはフラグ(g, i, mなど)を設定します。入力中、即座に構文チェックが行われます。

2

テスト文字列の準備

「Test String」エリアに、パターンがマッチするか試したいテキストを入力します。大規模なドキュメントやコードの一部などを貼り付けてテスト可能です。

3

結果の視覚的確認

「Visual Highlight」エリアで、パターンにマッチした箇所がハイライト表示されます。フラグ `g`(グローバル)が有効な場合は、すべてのマッチ箇所が強調されます。

4

マッチ詳細の分析

「Match Results」セクションで、各マッチの具体的な文字列、インデックス(開始位置)、およびキャプチャグループ(括弧 `()` で囲った部分)の内容を詳細に確認できます。

5

サンプルパターンの活用

ページ上部のボタンから、メールアドレス、URL、電話番号などのよく使われるパターンをワンクリックで読み込めます。これらをベースにカスタマイズするのが効率的です。

DEEP DIVE

ReDoS(正規表現 DoS)の見分け方

一見正しい正規表現でも、本番環境で CPU 100% を引き起こす危険があります。代表的な脆弱パターンと対処を整理しました。

正規表現エンジンが「バックトラッキング地獄」に陥るパターンは決まっています。 次のような構造を見つけたら、必ず別の書き方を検討してください。

危険パターン具体例対処
入れ子の量化子(a+)+$所有量化 (a+)++ または書き直し
交互+量化子の重複(a|aa)+パターンを排他的に:(aa|a)+
.* と境界の乱用^(.*?)\\1+$アンカー固定/String.indexOf で代替

メールアドレス検証の正規表現は特にバリエーションが多く、ReDoS の温床になりがち。 完璧を求めず「@ を含むか、ドメイン形式か」程度の緩いチェックに留め、 実際の到達確認はメール送信で行うのが現代の標準的な設計です。

DEEP DIVE

JavaScript 固有の挙動メモ

  • g フラグ + execlastIndex が状態を持つため、ループ外で正規表現を共有すると壊れる
  • Unicode フラグ u:絵文字や合成文字を「1文字」として正しく扱うために必須
  • 名前付きキャプチャ (?<name>...)match.groups.name で取り出せて可読性が大幅向上
  • 後読み (?<=...) / 否定後読み (?<!...):ES2018 以降。古い Safari は要確認

実際の使用例

CSVデータの解析

カンマ区切りのデータから特定の列を抽出

INPUT

id,name,email
1,田中,tanaka@example.com
2,佐藤,sato@example.com

OUTPUT

各行のメールアドレス部分にマッチ

HTMLタグの属性置換

特定の属性を持つタグを検索

INPUT

<a href="https://example.com" target="_blank">Link</a>

OUTPUT

hrefの内容をキャプチャグループで保持

よくある質問

フラグの「g」「i」「m」にはどのような意味がありますか?

「g」(global)は全マッチ検索(2番目以降も探す)、「i」(ignore case)は大文字小文字を区別しない、「m」(multiline)は `^` と `$` を各行の先頭と末尾に適用させるフラグです。

このテスターはどの言語の正規表現に基づいていますか?

ブラウザ上で動作しているため、JavaScript(ECMAScript)の正規表現エンジンに基づいています。他言語(Python, PHP, Javaなど)とは細かな仕様(後読み、名前付きグループなど)が異なる場合がありますが、基本的な構文は共通です。

正規表現が正しく動作しないのはなぜですか?

特殊文字(`?` `*` `+` `.` `[` `]` `(` `)`など)を通常の文字として扱いたい場合に、エスケープ(`\` を前に付ける)を忘れていることがよくあります。また、フラグの設定ミスも原因になります。

キャプチャグループの内容を確認できますか?

はい、マッチ詳細の「Groups」セクションに表示されます。`(pattern)` のように括弧で囲った部分が個別に抽出されるため、データの特定部分を抽出するスクリプトのテストに便利です。

パフォーマンスへの影響はありますか?

非常に複雑な正規表現(特にバックトラッキングが多く発生するもの)を巨大なテキストに対して実行すると、ブラウザが一時的にフリーズすることがあります。テストの際は少しずつパターンを構築することをお勧めします。

役立つTips

非キャプチャグループの使用

グループ化はしたいがキャプチャは不要な場合は `(?:pattern)` を使用してください。メモリ使用量を抑え、マッチング速度を向上させることができます。

最短一致(控えめなマッチ)

`*` や `+` はデフォルトで最長一致ですが、後ろに `?` を付けて `*?` や `+?` とすることで、最小限の範囲でマッチさせることができます。HTMLタグの抽出などに有効です。

エスケープの自動化

文字列を動的に正規表現に含める場合は、特殊文字をすべてエスケープする必要があります。本テスターでパターンを確認した後、コードに組み込む際は注意してください。

文字クラスの活用

単一の文字にマッチさせたい場合は `[a-z0-9]` のような文字クラスが便利です。否定の文字クラス `[^...]` も活用してパターンを簡潔にしましょう。

関連ツール