正規表現テスター
新着正規表現をライブのマッチハイライト、キャプチャグループ、置換プレビュー付きでテスト。
Match highlight
Matches & groups
Replace
Regex cheatsheetquick reference
- \d \D
- digit / non-digit
- \w \W
- word char / non-word char
- \s \S
- whitespace / non-whitespace
- .
- any char (except newline without s flag)
- ^ $
- start / end of string (line with m flag)
- \b \B
- word boundary / non-boundary
- [abc] [^abc]
- char set / negated set
- [a-z0-9]
- char range
- a* a+ a?
- 0+ / 1+ / 0 or 1
- a{3} a{2,5} a{2,}
- exactly 3 / 2–5 / 2 or more
- a*? a+?
- lazy (non-greedy) quantifiers
- (abc)
- capture group → $1
- (?<name>abc)
- named group → $<name>
- (?:abc)
- non-capturing group
- a|b
- alternation (a or b)
- \1 \k<name>
- backreference
- (?=abc) (?!abc)
- lookahead / negative lookahead
- (?<=abc) (?<!abc)
- lookbehind / negative lookbehind
- \n \t \r
- newline / tab / carriage return
- \. \* \\
- escaped literal . * \
Runs entirely in your browser. Nothing is uploaded.
JavaScriptの正規表現をリアルタイムでテスト
この無料の正規表現テスターは、入力した瞬間にすべてのマッチ箇所をハイライト表示します。ブラウザのJavaScriptエンジンをそのまま使用しているため、ここでマッチした結果はフロントエンドのコードやNode.jsで得られる結果と完全に一致します。6つのフラグ(g・i・m・s・u・y)を自由に切り替えでき、無効なパターンを入力した場合はエラーメッセージも表示されます。
ライブハイライトの下にはマッチ一覧が表示され、各マッチの位置とキャプチャグループ(番号付き・名前付き)をすべて確認できます。また置換パネルでは、$1・$<name>・$&などのバックリファレンスを使った置換結果をリアルタイムにプレビューできます。パターンが完成したら、JavaScriptコードとしてコピーボタンでそのままコードに貼り付けられる形式で取得できます。
regex101・regexrに代わる、JavaScriptに特化したツール
regex101.comはPCRE・Python・Golang・.NETなど複数のエンジンに対応した高機能なツールですが、JavaScriptのパターンだけをデバッグしたいときは機能が多すぎると感じることもあります。regexr.comはコミュニティパターンやリファレンスガイドが充実していますが、マッチ結果から置換プレビューに移動するのに複数のタブを行き来する必要があります。
このオンライン正規表現テスターは、日常的に必要な3つの問いを1画面で解決します。「マッチするか」「何をキャプチャしたか」「置換するとどうなるか」。エンジンの選択も、アカウント登録も、ファイルのアップロードも不要です。ハイライト表示だけのregexpal.comや、ビジュアルな鉄道図に特化したdebuggex.comとは異なり、マッチごとのキャプチャグループ抽出とバックリファレンスに対応したライブ置換プレビューを備えています。
よく使う正規表現パターンをワンクリックで挿入
内蔵ライブラリには実際のユースケースで役立つパターンが用意されています。メールアドレス・URL・IPv4アドレス・ISO形式の日付・24時間制の時刻・16進数カラーコード・URLスラッグ・国際形式の電話番号・数値(整数・小数)・HTMLタグ。各パターンは有効な例と無効な例のサンプルテキストとともに読み込まれるため、パターンの境界を正確に把握できます。
これらはあくまで出発点であり、正解ではありません。その場で編集してハイライトの変化を確認できます。サンプルにはIPv4の「999.999.1.1」など意図的にエッジケースが含まれているため、パターンが何を弾くのかも学べます。Stack Overflowからパターンをコピーして動作を確認する作業よりも、はるかに速く理解が深まります。
キャプチャグループ・先読み・6つのフラグをすべてサポート
モダンなJavaScript正規表現の強力な機能をすべて利用できます。名前付きグループ (?<year>\d{4})、先読み (?=…)・後読み (?<=…)、uフラグによるUnicodeプロパティエスケープ、yフラグによるスティッキーマッチなど。このテスターはJavaScriptエンジンそのものを使用しているため、すべての機能が動作します。マッチパネルでは各マッチのグループ値を個別に表示するので、データ抽出のロジックを一目で検証できます。
mフラグは特に便利です。有効にすると^と$が文字列全体ではなく各行の先頭・末尾にマッチするようになります。ログファイルを貼り付けて^ERRORパターンを使えば、問題のある行を瞬時に見つけられます。sフラグを切り替えると、. がマルチライン文字列の改行文字にもマッチするようになります。ここで表示される結果はすべて、実際のコードが生成するものと同一です。
内蔵チートシートで正規表現を効率的に習得
折りたたみ式の正規表現チートシートには、日常的に使うトークンがまとめられています。文字クラス(\d・\w・\s)、アンカー(^ $ \b)、量指定子(* + ? {n,m} とそのレイジー形式)、グループ、選択、バックリファレンス、4種類の先読み・後読みなど。実験しながら参照しておくと便利です。トークンの効果がリアルタイムでハイライト表示されるため、構文表を読むよりもはるかに速く身につきます。
まずはリテラル文字のマッチから始め、文字クラス、量指定子、グループの順に追加していきましょう。正規表現プレイグラウンドでのライブフィードバック5分間は、構文表を1時間読むより多くのことを教えてくれます。スマートフォンにも対応しており、iPhoneやAndroidでもアプリのインストールなしにパターンをデバッグできます。
Frequently asked questions
正規表現テスターとは何ですか?
正規表現テスターとは、正規表現のパターンとサンプルテキストを入力すると、マッチした箇所を即座にハイライト表示するインタラクティブなツールです。このテスターでは、番号付き・名前付きのキャプチャグループの値を表示し、JavaScriptの6つのフラグ(g・i・m・s・u・y)をすべてサポートしています。バックリファレンスを使ったライブ置換プレビュー、よく使うパターンのライブラリ、完全なチートシートも備えています。コードに組み込む前にパターンを検証・デバッグでき、インストールやアカウント登録は一切不要です。
このツールはregex101.comやregexr.comと何が違いますか?
regex101.comとregexr.comは優れたツールですが、複数のエンジン対応・フルデバッガー・クイズ・コミュニティパターンなど機能が多く、画面が複雑に感じることがあります。このテスターはJavaScriptエンジンに特化し、日常的に最も重要な3つの問い「マッチするか」「何をキャプチャしたか」「置換するとどうなるか」に絞って答えます。瞬時に読み込まれ、作業内容はローカルに保存され、すべてブラウザ内で動作し、URLエンコードされたリンクでパターンを共有できます。アカウントは不要です。PCRE・Python・Golangに対応するregex101とは異なり、このツールはブラウザのネイティブJavaScriptエンジンを使用するため、結果が完全に一致します。
regexpal.comやdebuggex.comとは違うのですか?
はい、異なります。Regexpalはシンプルなハイライト表示はできますが、キャプチャグループの詳細表示や置換プレビューには対応していません。Debuggexはビジュアルな鉄道図を追加していますが、よく使うパターンのライブラリがありません。このテスターはマッチごとのキャプチャグループ抽出、$1/$<name>/$&のバックリファレンスに対応したライブ置換パネル、現実的なサンプルテキスト付きのパターンライブラリを備えています。すべてが本物のJavaScriptエンジンで動作するため、コードが生成する結果と完全に一致します。アップロード不要で、オフラインでも動作します。
正規表現(regex)とは何ですか?
正規表現(regex)は「Regular Expression(レギュラーエクスプレッション)」の略で、検索パターンを定義する文字列です。テキストのマッチング・抽出・検証・検索置換など、ほぼすべてのプログラミング言語やテキストエディタで使用されています。この概念は1950年代に数学者のスティーブン・コール・クリーネによって確立されましたが、実用的な正規表現の普及は1980年代のPerlによって加速しました。
JavaScriptで正規表現をテストするにはどうすればよいですか?
JavaScriptには複数の方法があります。regex.test(str)は真偽値を返し、マッチするかどうかだけを確認したい場合に使います。str.match(regex)はマッチしたテキストの配列を返します。str.matchAll(regex)はグループの詳細を含むすべてのマッチを返します。regex.exec(str)はマッチを1つずつ取得しながら文字列を走査します。このテスターはこれらすべてを入力しながらリアルタイムで実行しており、「JavaScriptコードとしてコピー」ボタンを使えば、パターンをそのままプロジェクトに貼り付けられるコードとして取得できます。
正規表現のキャプチャグループとは何ですか?
括弧 ( ) はキャプチャグループを作成し、内部でマッチした内容を$1・$2などとして取得できます。(?<name>...)と記述する名前付きグループを使えば、番号ではなく名前で参照できます。キャプチャグループを使うと、メールアドレスからユーザー名とドメインを抽出したり、置換時にマッチした部分を再利用したりできます。このテスターのマッチパネルではマッチごとに各グループの値が表示されるため、本番コードに使用する前に抽出ロジックを簡単に検証できます。
正規表現のフラグ g・i・m・s・u・y とはそれぞれ何ですか?
g(グローバル)は最初のマッチで止まらずすべてのマッチを検索します。i(ignoreCase)は大文字・小文字を区別しないマッチを有効にします。m(マルチライン)は^と$を文字列全体の先頭・末尾ではなく、各行の先頭・末尾にマッチさせます。s(dotAll)はドット . が改行文字にもマッチするようにします。u(Unicode)は完全なUnicodeサポートと\p{Letter}のようなプロパティエスケープを有効にします。y(スティッキー)はlastIndexの位置にマッチをアンカーします。これら6つのフラグはすべて、このテスターでワンクリックで切り替えられます。
正規表現はデフォルトで大文字・小文字を区別しますか?
はい、区別します。/hello/は「hello」にマッチしますが「Hello」にはマッチしません。i(ignoreCase)フラグを切り替えると、大文字・小文字に関係なくパターンがマッチするようになります。これはバリデーションロジックでよくあるバグの原因です。例えばiフラグを忘れてしまうと、メールアドレスの正規表現が「User@Example.COM」にマッチしなくなります。
JavaScriptのmatch・test・execの違いは何ですか?
test()はbooleanを返します。マッチするかどうかだけを確認したい場合に使います。match()は文字列に対して呼び出し、マッチの配列またはnullを返します。exec()はregexに対して呼び出し、gフラグが設定されている場合は文字列を走査しながら詳細なマッチを1つずつ返します。matchAll()はグループの完全な詳細を含むすべてのマッチを一度に返します。データ抽出には通常これが最適な選択です。このテスターは内部でmatchAllを実行し、すべての結果をマッチパネルに表示します。
正規表現の先読み・後読みとは何ですか?
先読み(?=...)は文字を消費せずに現在位置の後ろにパターンが続くかどうかを確認します。否定先読み(?!...)はその逆を確認します。後読み(?<=...)と否定後読み(?<!...)は前の位置について同様の確認を行います。「パーセント記号が続かない数値にマッチ」や「円記号が前にある単語にマッチ」といった条件に役立ちます。モダンなJavaScript(V8)はこれら4種類の先読み・後読みをすべてサポートしており、このテスターでも動作します。
正規表現はすべてのプログラミング言語で同じですか?
いいえ、正規表現のフレーバーは言語によって大きく異なります。JavaScript・PCRE(PHPやPerlで使用)・Pythonのreモジュール・.NET・Java・Rubyはそれぞれ異なる構文と機能をサポートしています。PCREにはJavaScriptが持たない所有量指定子やアトミックグループがあります。Pythonでは名前付きグループに(?P<name>...)を使います。.NETにはバランシンググループがあります。このテスターは本物のJavaScript/V8エンジンを使用するため、フロントエンドコードやNode.jsと完全に一致する結果が得られます。
正規表現を使って文字列を検索・置換するにはどうすればよいですか?
JavaScriptでは、str.replace(/pattern/g, 'replacement')ですべてのマッチを置換できます。置換文字列に$1や$<name>を使うとキャプチャグループを挿入でき、$&を使うとマッチ全体を挿入できます。このテスターの置換パネルでは入力しながらリアルタイムで結果をプレビューできるため、コードに反映する前に置換内容を確認できます。より複雑な変換には関数を置換引数として使用することもできます。例えばすべてのマッチを大文字にするといった処理に役立ちます。
\d・\w・\s は正規表現でそれぞれ何を意味しますか?
\dは数字(0〜9)にマッチし、\wは単語文字(英字・数字・アンダースコア)にマッチし、\sは空白文字(スペース・タブ・改行)にマッチします。大文字の\D・\W・\Sはそれぞれの逆、つまり\d・\w・\sにマッチしない文字にマッチします。内蔵チートシートにはこれらとその他すべての一般的なトークンが例とともに一覧表示されています。文字クラスはほとんどの実用的なパターンの基本構成要素です。
正規表現が想定より多くマッチしてしまう(欲張りマッチ)のはなぜですか?
*や+などの量指定子はデフォルトで欲張りであり、できる限り多くのテキストをマッチしようとします。?を追加してレイジー(.*?)にすると、できる限り少ない文字数をマッチするようになります。別の方法として、[^"]*のような否定文字クラスを使って特定の区切り文字で止める方法もあります。このテスターにテキストを貼り付けると、欲張りとレイジーの違いが並べてハイライト表示されるため、何が起きているかを最も速く理解できます。
このテスターは無料ですか?パターンを共有することはできますか?
完全無料・広告なし・登録不要です。「共有リンクをコピー」ボタンを使うと、パターン・フラグ・テストテキストをURLにエンコードするため、チームメンバーがリンクを開くと同じ画面を見ることができます。双方ともアカウントは不要です。作業内容はブラウザにローカル保存されるため、次回アクセス時にも残っています。パターンの永続的な保存と共有にログインが必要なregex101とは異なり、このツールは即座に共有可能なURLを生成します。
Related tools
すべてのツールを見るURLエンコード / デコード
テキストをパーセントエンコード・デコードし、クエリ文字列も解析。すべてブラウザ上で。
HTMLエンティティ エンコード / デコード
HTMLエンティティをエスケープ・アンエスケープ。数値エンコードにも対応。
Cron式ビルダー
Cronスケジュールをわかりやすく説明し、次回の実行時刻をプレビュー。
HTML圧縮ツール
コメントを削除し空白を詰めてHTMLを圧縮。
CSS圧縮ツール
コメントや不要な空白を取り除いてCSSを圧縮。
JSONエスケープ / アンエスケープ
生のテキストをJSONで安全な文字列にエスケープし、元に戻す。