ツール

無料オンライン正規表現テスター

ブラウザ内でJavaScriptの正規表現をテスト・デバッグできます。マッチ箇所をリアルタイムでハイライト表示し、キャプチャグループを確認し、置換結果をプレビューできます。データがサーバーに送信されることは一切ありません。

フラグ
クイックパターン

マッチ結果

マッチ処理はすべてお使いのブラウザ内でローカルに実行されます。入力したパターンやテキストがアップロード・保存・記録されることはありません。

正規表現とは?

正規表現(regex)とは、検索パターンを定義する文字の並びのことです。1つの固定文字列を探すのではなく、正規表現は数字・単語・メールアドレス・日付など、探したいテキストの「形」そのものを記述します。そのため、入力値の検証やログの検索、テキストの高速かつ確実な変換に日常的に頼る開発者・データアナリスト・システム管理者にとって、パターンマッチングは最も強力なツールの一つです。

JavaScriptの正規表現フラグ解説

g グローバル(g) — 最初の1件だけでなく、文字列内のすべてのマッチを検索します。
i 大文字・小文字を区別しない(i) — 大文字・小文字にかかわらず一致します。
m 複数行(m) — アンカー ^ と $ が文字列全体ではなく、各行の先頭・末尾にマッチします。
s dotAll(s) — ドット . が改行文字にもマッチするようになります。
u Unicode(u) — U+FFFFを超えるコードポイントを含む、完全なUnicodeマッチングを有効にします。

よく使う正規表現パターン一覧

パターン名 正規表現 マッチ例
メールアドレス /[^\s@]+@[^\s@]+\.[^\s@]+/ hello@charcount.app
URL /https?:\/\/[^\s]+/ https://charcount.app
IPv4 /\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/ 192.168.0.1
日付(YYYY-MM-DD) /\d{4}-\d{2}-\d{2}/ 2026-06-30
HEXカラー /#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})\b/ #4338ca
UUID v4 /[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab]…/i 9f1c…5b6c

正規表現のキャプチャグループ

括弧を使うと、マッチした一部分をキャプチャして抽出・再利用できます。キャプチャグループには3種類あります。

  • ( ) — キャプチャグループ:マッチした内容を保存し、置換時に $1、$2 … としてアクセスできます。
  • (?: ) — 非キャプチャグループ:内容を保存せずに、選択や量指定子のためだけにパターンをグループ化します。
  • (?<name> ) — 名前付きグループ:読みやすい名前でキャプチャし、groups.name としてアクセスできます。

例えば、3つのグループで日付を解析する場合: (\d{4})-(\d{2})-(\d{2})

よくある質問

.* は貪欲(greedy)マッチで、できるだけ多くの文字にマッチしてから必要に応じてバックトラックします。.*? は非貪欲(lazy)マッチで、できるだけ少ない文字にマッチし、必要な場合のみ範囲を広げます。例えば "<a><b>" というテキストに対して、<.*> は "<a><b>" 全体にマッチしますが、<.*?> は "<a>" のみにマッチします。HTMLタグを1つずつ解析する場合など、最短のマッチが欲しいときは非貪欲版を使いましょう。

. ( ) [ ] { } + * ? ^ $ | \ などの文字は正規表現において特別な意味を持つため、そのままの文字としてマッチさせたい場合はバックスラッシュでエスケープします。ドット自体には \.、開き括弧には \(、バックスラッシュ自体には \\ と記述します。文字クラス内(例:[.])では、これらの文字の多くは特別な意味を失うため、エスケープは不要です。

多くのオンラインテスターはデフォルトでPCREエンジンを使用しますが、このツールとお使いのブラウザはJavaScript(ECMAScript)エンジンを使用しており、一部の機能が異なります。JavaScriptは古いエンジンでは戸読み(lookbehind)、所有量指定子、再帰、(?i)のようなインラインフラグをサポートしていません。テスターがJavaScript方式に設定されていることを確認し、実際のコードの動作と一致させましょう。

g(グローバル)フラグを付けると、最初のマッチだけで止まらず、文字列内のすべてのマッチを検索するようになります。matchAll() や replaceAll() を使う場合、または replace() ですべての一致を置換したい場合に必要です。g がない場合、replace() などのメソッドは最初のマッチのみを変更します。なお、グローバル正規表現は lastIndex という状態を保持するため、ループ内で exec() を呼び出す際は注意が必要です。