正規表現テスター オンライン — JavaScript の正規表現をリアルタイムでテスト
サンプルテキストに対して正規表現をテストし、マッチのハイライト、キャプチャグループ、置換のプレビューをリアルタイムで確認。無料、ブラウザ上で動作。
Contact us at hello@freetoolsforweb.com or sales@example.org. Site: https://freetoolsforweb.com/tools — call (416) 555-0199. Launched 2026-09-08, colours #244b3f and #fff, server 10.0.0.12.
| # | 一致 | 位置 | グループ |
|---|---|---|---|
| 1 | hello@freetoolsforweb.com | 14 | — |
| 2 | sales@example.org | 43 | — |
共有リンクを開くと、同じパターン、フラグ、テスト文字列、置換文字列でこのテスターが開きます。これらはリンクの # 以降に保存され、ブラウザがサーバーに送信することはありません。
すべてブラウザ内で動作します。入力内容が送信・保存されることはありません。 すべての無料ツールを見る.
不具合や改善できそうな点を見つけましたか?いただいたメッセージはすべて読み、すぐに対応します。
この無料の正規表現テスターは、ブラウザ上で JavaScript の正規表現をサンプルテキストに対して実行し、入力に合わせてすべてのマッチをハイライトします。マッチごとにキャプチャグループ、名前付きグループ、マッチの位置が一覧表示され、置換モードでは $1 や $<name> による置換を String.replace とまったく同じ結果でプレビューできます。共有リンクをコピーすれば、開いた人は誰でも同じパターン、フラグ、テストテキストを見られます。当サイトの正規表現チートシートの例も、すべて同じようにここで開けます。
エンジンはお使いのブラウザ自身のものなので、結果は Node.js、React、Deno、あらゆる Web フレームワークと完全に一致します。PCRE(PHP、Python の re、grep -P)とは近いものの同一ではありません。特に重要な違いである後読みの対応、強欲な量指定子、\A アンカーについては下で説明しているので、ここで動いたパターンがほかの環境で予想外の動きをすることはありません。
使い方
- 前後のスラッシュなしでパターンを入力するか、プリセット(メール、URL、電話番号、日付、IPv4、16 進カラーコード)をクリックして、動作が確認済みのものから始めます。
- 必要なフラグにチェックを入れます。g は最初のマッチだけでなくすべてのマッチを探し、i は大文字・小文字を区別せず、m は ^ と $ を各行の先頭と末尾にマッチさせます。
- テストテキストを貼り付けます。マッチはすぐにハイライトされ、表に各マッチとそのキャプチャグループが一覧表示されます。
- 「置換」を開くと置換をプレビューできます。番号付きグループには $1、名前付きグループには $<name>、マッチ全体には $& を使います。
- JavaScript のリテラルには /pattern/flags の形で、パターンが文字列から来る場合は new RegExp() の形でコピーします。
- 「共有リンクをコピー」をクリックすると、設定一式を同僚に送れます。状態はリンクの # の後ろに入っているので、相手が開いてもサーバーには送信されません。
よくある質問
どの正規表現の方言を使っていますか?
ECMAScript(JavaScript)です。ブラウザがパターンを直接評価するからです。これは Node.js、フロントエンドのコード、JSON スキーマのパターンで使われているものです。Python、Java、Go、PHP、grep にはそれぞれ独自のエンジンがあり、基本は共通でも細部が異なります。変わったものを公開する前には、対象の言語でテストしてください。
パターンが最初のマッチしか見つけないのはなぜですか?
g(グローバル)フラグがオフになっています。g がないと JavaScript は最初のマッチで止まります。入力チェックにはそれで正しいのですが、抽出には不向きです。すべてのマッチを一覧表示するには g をオンにしてください。
複数行にまたがってマッチさせるには?
2 つの異なるフラグがそれぞれ別のことをします。m(複数行)は ^ と $ を各行の先頭と末尾にマッチさせます。s(dotAll)は . を改行文字にもマッチさせます。s を使わずに「改行を含む任意の文字」を表す定番の書き方は [\s\S]* です。
名前付きキャプチャグループとは何ですか?
(?<year>\d{4}) は 4 桁の数字を year という名前でキャプチャするので、かっこを数える代わりに match.groups.year で読み取れ、置換では $<year> として参照できます。名前付きグループは長いパターンを読みやすくし、ほかのグループを追加・削除する編集にも影響されません。
正規表現が遅くなったり危険になったりすることはありますか?
あります。(a+)+ のような入れ子の量指定子や重なり合う選択肢を持つパターンは、入力によっては指数関数的な時間がかかります(壊滅的バックトラッキング。実際のサービス拒否攻撃の手口です)。パターンでこのページが固まるなら、それはサーバーを固まらせるのと同じことです。.* より具体的な文字クラスを使い、量指定子の入れ子は避けましょう。
メールアドレスは正規表現で検証すべきですか?
ゆるやかにだけです。ここのプリセットは一般的な形にマッチし、明らかな打ち間違いをはじきます。フォームがすべきことはそれだけです。RFC 5322 に完全に準拠したパターンは何千文字にもなり、それでもメールボックスが存在するかどうかはわかりません。形をチェックしたら、確認メールを送りましょう。
簡単な正規表現チートシート
• . 改行以外の任意の文字 · \d 数字 · \w 単語構成文字 · \s 空白文字 · \b 単語境界
• * 0 回以上 · + 1 回以上 · ? 省略可 · {n,m} n 回以上 m 回以下 · これらの後に ? を付けると最短一致
• [abc] いずれか · [^abc] いずれでもない · [a-z] 範囲 · (x|y) 選択 · (?:x) キャプチャしないグループ
• ^ 先頭 · $ 末尾 · (?=x) 先読み · (?!x) 否定先読み · (?<=x) 後読み(JavaScript と PCRE。すべてのエンジンではありません)
• 特殊文字はバックスラッシュでエスケープ:\. \? \( \[ \\
JavaScript と PCRE:実際に遭遇する違い
JavaScript には強欲な量指定子(a++)、アトミックグループ、\A や \Z のアンカーがなく(m フラグなしの ^ と $ を使います)、インライン修飾子は ES2025 で導入されたスコープ付きの形 (?i:...) だけで、パターンの先頭にスコープなしの (?i) を書くと構文エラーになります。一方、後読み、名前付きグループ、u フラグをオンにしたときの \p{L} のような Unicode プロパティエスケープには対応しています。Python の re はさらに、regex パッケージなしでは \p{...} が使えず、Go の RE2 には先読み・後読みが一切ありません。パターンを複数の言語で動かす必要があるなら、共通部分にとどめましょう。文字クラス、単純なグループ、アンカー、最長一致または最短一致の量指定子です。
関連する無料ツール
- 正規表現早見表 — 正規表現のすべてのトークンを、動作する例、JavaScript・PCRE/PHP・Python・Go・Java・.NET での対応状況、入力済みの正規表現テスターを開く「試す」リンク付きで掲載。
- JSON 整形 — JSON を整形、圧縮(minify)、検証し、解析エラーは行と列で位置を示します。ブラウザ上で動作、アップロード不要。
- Base64 エンコーダー / デコーダー — テキストやファイルを Base64 にエンコードし、画像を CSS や <img> のコード付きでデータ URI に変換、Base64 をプレビュー可能なファイルにデコードできます。データはブラウザの外に出ません。
- 文字数カウント — 単語数、文字数、文の数、読了時間を数え、入力しながら X、LinkedIn、Instagram、YouTube、SEO、SMS の上限を確認できます。