本文へスキップ
App Museum
English

正規表現テスター

正規表現パターンをテキストに対して試し、マッチ箇所をハイライトしてキャプチャグループも確認できます。名前付きグループは名前ごとに内容を表示し、$1 や $<名前> を使った置換の結果も確かめられます。

マッチ数: 0

使い方

  1. 「パターン」に正規表現を入力します。前後の / や引用符は付けません
  2. 「フラグ」に g、i、m、s、u などを続けて入力します。最初は g が入っています
  3. 「対象テキスト」に、マッチさせたい文字列を貼り付けます
  4. マッチした箇所が黄色でハイライトされ、その下にマッチ数と一覧が表示されます
  5. 置換を確かめたいときは「置換も試す」にチェックを入れ、「置換後の文字列」を入力します。置き換えた後の文章が「置換結果」に表示されます

実行ボタンはなく、欄のどれかを書き換えるたびに結果が更新されます。更新を待っている間は、直前の結果が薄く表示されます。パターンが空のときは、対象テキストがハイライトなしで表示され、マッチ数は0です。

具体例

パターンに \d+、フラグに g、対象テキストに次の文を入力します。

注文番号は12件、合計450円です

12 と 450 がハイライトされ、マッチ数は2、一覧は次のようになります。

#1 @5: "12"
#2 @11: "450"

# のあとは何番目のマッチか、@ のあとはマッチが始まる位置です。位置は先頭を0として数えます。絵文字のようにJavaScriptの内部で2単位を使う文字は、2つ分進みます。

かっこでグループを作ると、グループごとの内容も表示されます。パターン (\d{4})-(\d{2})-(\d{2}) を 開始 2026-10-11、終了 2026-12-01 に試した結果は次のとおりです。

#1 @3: "2026-10-11" グループ: ["2026","10","11"]
#2 @17: "2026-12-01" グループ: ["2026","12","01"]

名前付きグループ (?<名前>…) を使うと、かっこの順の一覧のあとに、名前ごとの内容も表示されます。パターン (?<year>\d{4})-(?<month>\d{2})-(\d{2}) を同じ文に試した結果は次のとおりです。名前のない3つ目のグループは「グループ」の側にだけ出ます。

#1 @3: "2026-10-11" グループ: ["2026","10","11"] 名前付き: {year: "2026", month: "10"}
#2 @17: "2026-12-01" グループ: ["2026","12","01"] 名前付き: {year: "2026", month: "12"}

置換を試す

「置換も試す」にチェックを入れると、マッチした部分を「置換後の文字列」に置き換えた文章が「置換結果」に表示されます。置き換えた部分はハイライトされ、置換した箇所の数も表示されます。「置換結果をコピー」で、置き換えた後の文章をコピーできます。

パターン (\d{4})-(\d{2})-(\d{2})、対象テキスト 開始 2026-10-11、終了 2026-12-01 で、置換後の文字列に $1年$2月$3日 を入力すると、置換結果は次のようになります。置換した箇所は2か所です。

開始 2026年10月11日、終了 2026年12月01日

置換後の文字列には、次の書き方でマッチの内容を入れられます。

  • $1〜$99: かっこの順で数えたグループの内容。マッチに使われなかったグループは空の文字列になります
  • $<名前>: 名前付きグループの内容。パターンに名前付きグループがないときは、$< がそのまま文字として残ります
  • $&: マッチした文字列全体
  • $`: マッチより前の部分すべて
  • $': マッチより後の部分すべて
  • $$: $ という1文字

置換後の文字列を空欄のままにすると、マッチした部分を削除した結果になります。たとえばパターン \s+ では、空白をすべて取り除いた文章になります。

置換結果は、JavaScriptで 対象テキスト.replace(new RegExp(パターン, フラグ), 置換後の文字列) を実行した結果と同じです。そのため、マッチの一覧とは違い、フラグに g がないと最初の1件だけを置き換えます。このときは置換結果の上に、そのことが表示されます。長い文章を、大文字と小文字の区別などの設定を選んでまとめて置き換えるには、「テキスト置換ツール(検索と置換)」も使えます。

フラグによる違い

フラグは、ブラウザのJavaScriptが対応しているものを指定できます。同じパターンでも、フラグによって結果が変わります。

  • i(大文字と小文字を区別しない): apple を Apple apple APPLE に試すと、g だけでは1件、gi では3件です
  • m(行ごとに ^ と $ を判定する): ^\w+ を2行の文 one two と three four に試すと、g では one の1件、gm では one と three の2件です
  • s(. を改行にもマッチさせる): a.b は、a と b の間に改行がある文字列に g ではマッチせず、gs でマッチします
  • u(Unicodeの文字単位で扱う): . を絵文字 😀 に試すと、g では2件、gu では1件です。\p{Script=Hiragana}+ のような指定も u が必要で、gu なら 東京のそら から のそら を取り出せます
  • y(直前のマッチの続きからだけ探す): \d を 12a3 に試すと、1 と 2 の2件で止まります

このアプリは、すべてのマッチを一覧にするため、フラグに g がなくても内部で g を付けて実行します。マッチの一覧では「最初の1件だけ」の動作は再現できません(置換結果は、g がなければ最初の1件だけを置き換えます)。フラグの選び方は、ガイド「JavaScript正規表現フラグの使い分け」にまとめています。

よくあるつまずき

  • .+ はできるだけ長くマッチします。<.+> を <b>太字</b> に試すと全体が1件になります。タグを1つずつ取り出すには、<.+?> のように ? を付けて最短のマッチにします
  • パターンを /\d+/ のようにスラッシュで囲むと、スラッシュも文字として探します。囲まずに \d+ と入力してください
  • u を付けずに \p{L} と書くと、Unicodeの文字種の指定にならず、p{L} という文字の並びを探します
  • \b や x* のように長さ0でマッチするパターンは、マッチ数には数えられ、一覧に "" と表示されますが、ハイライトされる文字はありません。詳しくはガイド「正規表現のゼロ幅一致を安全にテストする方法」を参照してください
  • グループのうちマッチに使われなかったものは null と表示されます。(a)|(b) を ab に試すと、1件目のグループは ["a",null] です
  • 名前付きグループもかっこの順に数えられるので、「グループ」と「名前付き」の両方に出ます。名前付きグループのうちマッチに使われなかったものは、名前を残して null と表示されます。(?<letter>[a-z])|(?<digit>\d) を a1 に試すと、1件目は {letter: "a", digit: null} です

制限と仕様

  • 正規表現の方言はJavaScriptです。PCRE、Python、Javaなどに固有の構文は、エラーになるか、別の意味で解釈されます。使える構文は、お使いのブラウザのバージョンにも左右されます
  • 表示するマッチは最大1000件です。それより多い場合はマッチ数が 1000+ と表示され、1001件目以降はハイライトされません
  • 入力が止まってから0.15秒後に、ページの表示とは別のバックグラウンド処理(Web Worker)でマッチを実行します。1秒以内に終わらない場合は処理を打ち切り、結果を表示しません。Web Workerを使えないブラウザではページ側で実行するため、この打ち切りは働きません
  • 置換は、表示している最大1000件のマッチに対して行います。それより多い場合、1001件目以降のマッチは元のまま残り、置換結果の上にそのことが表示されます
  • 置換結果が100万文字を超える場合は、置換結果を表示しません。$` や $' を多くのマッチで使うと、結果が急に長くなります
  • 置換後の文字列に $1 などの参照がとても多く、マッチも多い場合(参照の数とマッチの数を掛けておよそ500万を超える場合)も、入力のたびに処理が重くならないよう、置換結果を表示しません
  • replace の第2引数に関数を渡す書き方は試せません。置換後の文字列は、上の $ の書き方を含む文字列として扱います
  • パターンも対象テキストも、ブラウザの RegExp で処理するだけで、外部へ送信しません。ログや顧客データの一部を貼り付けて試す用途にも使えます

FAQ

無効な正規表現を入力するとどうなりますか?

かっこの閉じ忘れなどでパターンが不正な場合や、存在しないフラグ、同じフラグの重複を指定した場合は、ブラウザが返すエラーメッセージ(英語)が表示されます。u と v を同時に指定した場合もエラーです。

後方参照や名前付きキャプチャグループは使えますか?

はい。(\w)\1 を aabbcd に試すと、aa と bb がマッチします。名前付きグループは、名前での後方参照 \k<名前> も使えます。(?<q>["'])\w+\k<q> を "a" 'b' "c' に試すと、同じ引用符で閉じた "a" と 'b' の2件がマッチし、一覧の「名前付き」に {q: "\""} と {q: "'"} が表示されます。JavaScriptの RegExp が対応する構文であれば利用できます。

フラグを空にするとどうなりますか?

g を指定したときと同じく、すべてのマッチが表示されます。内部で g を付けて実行するためです。ただし置換結果は、JavaScriptの replace と同じく、最初の1件だけを置き換えたものになります。

置換結果に $1 がそのまま残るのはなぜですか?

パターンに1つ目のグループがないためです。$ のあとの数字は、その番号のグループがあるときだけ置き換えられます。\d+ のようにかっこのないパターンでは、$1 は文字として残ります。マッチ全体を入れるときは $& を使います。また、グループが9個以下のときの $10 は、$1 のあとに 0 を続けたものとして扱われます。

マッチ数に上限はありますか?

1回の実行で表示するのは1000件までです。上限に達して打ち切った場合は、マッチ数の末尾に + が付きます。

「1秒以内に処理が終わらなかったため中断しました」と表示されるのはなぜですか?

(a+)+$ のように繰り返しが入れ子になったパターンは、マッチしない文字列に対して試す組み合わせが爆発的に増えること(破滅的バックトラック)があります。たとえば a が長く続いたあとに ! が付く文字列が該当します。Web Workerを使えるブラウザでは、このアプリは1秒を超えた処理を打ち切るため、入力欄はそのまま操作できます。a+$ のように入れ子の繰り返しをなくす、対象テキストを短くするなどして見直してください。

PythonやPHPで使う正規表現もテストできますか?

共通する基本的な構文であれば、動作の確認に使えます。ただし、実行しているのはJavaScriptの正規表現です。言語ごとに違いがあるため、最終的な確認は実際に使う言語で行ってください。

種別
ユーティリティ
カテゴリ
開発者向け
タグ
regex
regexp
pattern
test
replace
developer
  • カラーコード変換ツール

    HEX・RGB・HSL のカラーコードを相互に変換し、HSV・CMYK・OKLCH の表記も表示。カラーピッカーやプレビューで確認でき、白・黒や指定した文字色とのコントラスト比(WCAG)も分かります。

    ユーティリティ開発者向けcolorhexrgbhslhsvcmykoklchcontrastcontrast-checkerwcagconverterdeveloper
  • XML整形・圧縮ツール

    1行につながったXMLを、字下げをつけた読みやすい形に整形します。字下げはスペース2つ・4つ・タブから選べ、1行に圧縮することもできます。タグの閉じ忘れなどの誤りは、行と位置を示します。XPathの式で要素や属性を抜き出すこともできます。ブラウザ内で完結。

    ユーティリティ開発者向けxmlformatterminifypretty-printvalidatorxpathdeveloper
  • chmod計算ツール(パーミッション変換)

    Linux・macOS のファイルのパーミッションを、755 のような数値と rwxr-xr-x のような記号のあいだで変換します。r・w・x のマスを押して読み取り・書き込み・実行を選ぶと、chmod コマンドがその場でできあがります。setuid・setgid・スティッキービットにも対応し、umask から新しいファイルとディレクトリの権限も出せます。

    ユーティリティ開発者向けchmodpermissionlinuxunixoctalumaskcalculatordeveloper