PixConvert

無料オンライン正規表現テスター&デバッガー

ブラウザ上で、即時のシンタックスハイライトとキャプチャグループの内訳を確認しながら、正規表現を作成・デバッグできます。

//
Examples:

正規表現のテスト方法

1

パターンを入力します。

2つのスラッシュの間に入れる正規表現を、スラッシュなしで入力してください。g、i、m、sのボタンでフラグを選ぶか、3つの例のどれかを読み込みます。

2

テストテキストを貼り付けます。

パターンの下のボックスにサンプルテキストを入れてください。入力と同時にマッチがハイライトされ、パターンが見つけた件数も表示されます。

3

グループを確認してコピーします。

マッチごとに表示されるキャプチャグループを確認してください。パターンが期待どおり動いたら、/pattern/flags の形式でコピーして、JavaScriptコードに貼り付けます。

よくある質問

JavaScriptの正規表現エンジン、フラグ、グループに関する回答です。

正規表現をオンラインでテストするにはどうすればいいですか?

上のボックスにスラッシュなしでパターンを入力し、その下にサンプルテキストを貼り付けます。入力と同時にマッチがハイライトされ、マッチ数も更新されます。最初の1件だけでなくすべてのマッチを見るには、gをオンにしてください。

このテスターはどの正規表現の方言を使っていますか?

JavaScript組み込みのRegExpエンジンを使っており、ブラウザーが実行するECMAScript系の方言です。ここでマッチするパターンは、JavaScriptやTypeScriptのコードでも同じようにマッチします。PCRE、Python、Javaの構文は異なる場合があるため、それらのパターンは各言語のエンジンでテストしてください。

PythonやPHPでは動く正規表現が、ここで動かないのはなぜですか?

JavaScriptにはPCREやPythonの構文の一部がありません。a++ のような強欲な量指定子(所有格量指定子)、アトミックグループ、インラインの (?i) フラグ、Pythonの (?P...) 名前付きグループは、Nothing to repeat や Invalid group のエラーになります。\K は単なる K として扱われます。これらの部分はJavaScriptの構文に書き換えてください。

g、i、m、sフラグは何をしますか?

gフラグは、最初のマッチで止まらずすべてのマッチを見つけます。iフラグは大文字と小文字を区別しません。mを使うと、^ と $ のアンカーが各行でマッチします。sを使うと、ドットが改行にもマッチします。最初からオンなのはgだけです。

u、y、dフラグには対応していますか?

いいえ。オンにできるのはg、i、m、sだけです。uがないとUnicodeプロパティエスケープは使えず、絵文字は2文字として数えられるため、ドットが半分にしかマッチしません。Unicodeを多用するパターンは、今のところご自身のコードでテストしてください。

名前付きキャプチャグループはどう使いますか?

組み込みのword例のように、開き括弧の直後に疑問符と山括弧で囲んだ名前を置きます。すると各マッチでグループが word: longer のように名前付きで表示されます。名前付きと名前なしのグループが混在するパターンでは、名前付きのものだけが表示されます。

パターンが空のマッチを表示するのはなぜですか?

a* や \d* のように何にもマッチしなくてよいパターンは、条件に合わない位置ごとに空文字列にもマッチします。テキスト bbb に対して a* を使うと、空のマッチが4件出ます。1文字以上が必要な場合は、* の代わりに + を使ってください。

^ が最初の行にしかマッチしないのはなぜですか?

mフラグがない場合、^ と $ はテキスト全体の先頭と末尾を表します。mをオンにすると改行ごとにマッチするため、^\w+ のようなパターンで最初の行だけでなく各行の最初の単語を検出できます。

特定のパターンでページが固まるのはなぜですか?

(a+)+$ のような入れ子の量指定子は壊滅的なバックトラッキングを引き起こし、このテスターには時間制限がありません。同じコードをNodeでテストしたところ、27文字で約2秒かかり、1文字増えるごとに2倍になりました。内側のグループを絞り込み、固まった場合はタブを再読み込みしてください。

この正規表現テスターでテキストを置換できますか?

いいえ、置換モードはまだありません。このテスターが表示するのはマッチとキャプチャグループだけです。置換を計画するには、各グループが目的の部分をキャプチャしているか確認し、ご自身のコードの String.replace で $1 として使ってください。

テストしたテキストはどこかに送信されますか?

テスト用のテキストは送信されません。マッチ処理はブラウザー内で実行されます。公開サイトでは、Google Analyticsがマッチ実行ごとの回数と所要時間を記録します。無効なパターンの場合はエラーメッセージも送られ、Chromeではそのメッセージにパターン自体が含まれます。

JavaScriptパターン向け正規表現テスターの機能

パターンはブラウザー標準のJavaScript RegExpエンジンで実行されるため、ここでマッチしたパターンはJavaScriptコードでも同じようにマッチします。

パターン \d{4}-\d{2}-\d{2} とgフラグをオンにし、ログ行内の3つの日付をハイライトした正規表現テスター

入力と同時に正規表現のマッチをハイライト

テストテキスト内のすべてのマッチが色で示され、上のマッチ数も変更のたびに更新されます。gがオンなら全マッチ、オフなら最初のマッチだけが表示されます。

  • キー入力のたびに再計算
  • gフラグで全マッチを検出
  • テキストの上にマッチ数を表示
今すぐ試す
(?<year>\d{4})-(?<month>\d{2}) のキャプチャグループを表示する正規表現テスター。year は 2024 で、month は 01、01、02 です

マッチごとのキャプチャグループを確認

ハイライトの下には、マッチごとにグループを含む行が表示されます。名前付きグループは word: longer のように名前で、名前なしのグループはグループ1、グループ2…のように表示されます。

  • 名前付きグループを名前で一覧表示
  • マッチしなかったグループはダッシュで表示
  • マッチごとに1行
今すぐ試す

4つのフラグをワンクリックで切り替え

パターンの横にあるボタンで、グローバル(g)、大文字小文字を無視(i)、複数行(m)、dotAll(s)を切り替えられます。gは最初からオンです。u、y、dフラグにはまだ対応していません。

パターンが失敗する理由を確認

無効なパターンの場合、Unterminated group や Nothing to repeat といったエンジン自身のメッセージが赤いボックスに表示されます。パターンを直せば、マッチが再び表示されます。

例から始める

サンプルパターンが3つあり、ワンクリックで読み込めます。メールアドレス、2024-01-15のようなISO形式の日付、5文字以上の単語を拾う名前付きグループです。コピーすると、パターンが /pattern/flags の形式でクリップボードに入ります。

テストテキストはここに留まります

マッチ処理はお使いのデバイス上で実行され、テストしたテキストが送信されることはありません。利用統計には、マッチにかかった時間と、無効なパターンの場合はエラーメッセージが記録され、そこにパターンが含まれることがあります。

正規表現のよくある活用例

先に正規表現をテストしておくと、あとのバグを防げる3つの身近な作業です。

フォームの入力チェック

メールアドレス、電話番号、郵便番号のパターンをフォームに組み込む前に、実際のサンプルで確認できます。正しい入力と誤った入力を別の行に貼り付けて、どれがマッチするかを確かめましょう。

  • 正しい入力と誤った入力を1行ずつ貼り付け
  • mをオンにしてアンカーを各行にマッチさせる
  • 誤ったサンプルがすべて除外されるか確認

ログ解析

IPアドレス、タイムスタンプ、ステータスコードなど、ログ行からフィールドを抜き出せます。ログファイルの数行を貼り付け、グループで各部分をキャプチャしましょう。

  • 番号付きグループでIPアドレスをキャプチャ
  • 2024-01-15のようなISO形式の日付にマッチ
  • 各グループに名前を付けて全フィールドを識別

置換前のテキスト検索

コードに置換処理を書く前に、テキストブロック内のURL、ハッシュタグ、繰り返し出てくる単語をすべて見つけられます。マッチ数から、何件ヒットするかが分かります。

  • 貼り付けたテキストからURLやメールアドレスを検索
  • 後方参照で重複した文字や単語を発見
  • 一括置換の前にマッチ数を確認