正規表現テスト
ブラウザ上で JavaScript 正規表現をローカルにテストし、g/i/m/s/u/y フラグ、マッチ数、キャプチャグループ、名前付きグループ、行・列位置、ネイティブの置換プレビューを確認できます。
/
/g
テストテキスト
文字
0 / 50,000
マッチ結果
パターンを入力してマッチを開始します
置換テキスト
文字
0 / 50,000
置換プレビュー
かんたんスタート
よくある利用シーン
データ抽出
(\d{4}-\d{2}-\d{2}) で日付を抽出し、([\w.]+@[\w.]+) でメールアドレスを抽出します
形式検証
正規表現を書いて複数のサンプルを貼り付け、パターンが対象形式に正確に一致するかをすばやく確認します
一括置換
キャプチャグループで内容を並べ替えます。たとえば、パターン (\S+)\s+(\S+) と置換 $2, $1 で「名 姓」を「姓, 名」に変換します
名前付きグループ
(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2}) を使用して日付を抽出し、$<year>/$<month>/$<day> を使用して再構築します。
正規表現の学習
さまざまなパターンを試し、マッチの挙動を観察して量指定子、アンカー、文字クラスを視覚的に理解します
複数行処理
m フラグを有効にすると ^ と $ が行単位でマッチし、ログ、コード、設定ファイルに便利です
使い方のヒント
制限事項と互換性
プライバシーとセキュリティ
よくある質問
正規表現(Regular Expression、略称 regex)は、テキストパターンを特定の構文で記述するツールです。「高度な検索」と考えてください——固定の単語ではなく、あるルールに合致するすべてのテキストを検索します。\n\n例えば \\d{4}-\\d{2}-\\d{2} はすべての「年-月-日」形式の日付にマッチし、[\\w.]+@[\\w.]+ はメールアドレスにマッチします。正規表現はテキスト検索・抽出、形式検証、一括置換に広く使われています。\n\nほぼすべてのプログラミング言語(JavaScript、Python、Java、Go など)と多くのツール(VS Code、grep、sed)が正規表現をサポートしています。本ツールは JavaScript の RegExp エンジンを使用しています。
JavaScript の正規表現はデフォルトで最初のマッチのみを返します。これは言語仕様の動作であり、ツールの制限ではありません。フラグバーの g をクリックしてグローバル検索を有効にしてください。\n\ng と y の相互作用にご注意ください。g はテキスト全体を先頭から末尾まで走査しますが、y(sticky)は各マッチが前回の終了位置から始まる必要があります。間に文字があるとそこで止まるため、通常は g のみで十分です。
主な原因は4つです。 1. 括弧の対応が取れていない: すべての ( には対応する )、すべての [ には対応する ] が必要です。IDE が自動補完していても、ここでは入力されたパターンをそのまま検証します。 2. 量指定子の位置が不正: *、+、?、{n} は繰り返せる要素の後に置く必要があります。*+ や ?* は無効です。遅延量指定子は *? や +? のように書きます。 3. エスケープが途中で終わっている: 末尾の単独の \ は無効です。\d、\n、\\ のように具体的な文字をエスケープしてください。 4. Unicode プロパティに u フラグがない: \p{L} や \p{Script=Han} などの property escape は、このツールでは u フラグが必要です。
これらは JavaScript の String.prototype.replace() で使う置換参照です。 - $1、$2、...、$99: 1番目から99番目までのキャプチャグループの内容。 - $&: マッチ全体。 - $`: マッチの前のテキスト。 - $': マッチの後のテキスト。 - $<name>: 名前付きキャプチャグループ (?<name>...) の内容。 たとえば (\w+)\s(\w+) で「hello world」にマッチし、$2-$1 に置換すると「world-hello」になります。置換文字列に $ そのものを入れる場合は $$ と書きます。
言語によって正規表現エンジンの挙動は異なります。主な違いは3つです。 1. 対応する構文: JavaScript は PCRE の再帰パターン (?R)、条件分岐 (?(cond)yes|no)、アトミックグループ (?>...) をサポートしません。Python の re も同様ですが、第三者製の regex モジュールは一部をサポートします。Java はアトミックグループをサポートしますが、再帰はサポートしません。 2. Unicode の扱い: JavaScript の \w は主に基本ラテン文字、数字、アンダースコアです。u を有効にしても漢字には自動で一致しません。Unicode 文字には \p{L} などの property escape と u フラグを使います。 3. 改行の扱い: Python の . は既定では \n に一致しません(JavaScript と同じ)。Java の Pattern.DOTALL は JavaScript の s フラグに近い動作です。まずこのツールで JavaScript RegExp を確認し、最後は対象言語の実エンジンで検証してください。