正規表現チェッカー

パターンとテスト文字列を入力すると、マッチした箇所、各グループが取り出した内容、置換後の結果をその場で確認できます。ブラウザの JavaScript 正規表現エンジンで動作します。

フラグ
マッチ結果
正規表現チートシート
構文意味例
. 任意の 1 文字(改行を除く。s フラグで改行も含む) a.c は abc、a1c にマッチ
\d \D 半角数字 0–9/数字以外 \d{3} は 123 にマッチ
\w \W 半角英数字とアンダースコア/それ以外 \w+ は user_01 にマッチ
\s \S 空白文字(スペース、タブ、改行)/空白以外 a\sb は a b にマッチ
\b 単語の境界(半角英数字のみ有効) \bcat\b は category にマッチしない
^ $ 先頭/末尾(m フラグでは各行) ^\d+$ 行全体が数字
[abc] [^abc] いずれか 1 文字/それ以外の 1 文字 [aeiou] 母音
[a-z0-9] 文字の範囲 [A-F0-9] 16 進数
* + ? 0 回以上/1 回以上/0 回か 1 回 colou?r は color、colour にマッチ
{n} {n,} {n,m} ちょうど n 回/n 回以上/n〜m 回 \d{2,4}
*? +? 最短一致(非貪欲) <.+?> はタグ 1 つだけにマッチ
(abc) キャプチャグループ。$1 で参照 (\d+)-(\d+)
(?:abc) キャプチャしないグループ (?:ab)+
(?<name>abc) 名前付きグループ。$<name> で参照 (?<year>\d{4})
a|b または cat|dog
(?=abc) (?!abc) 肯定/否定先読み \d+(?=円) 金額の数字だけ
(?<=abc) (?<!abc) 肯定/否定後読み (?<=¥)\d+
\1 1 番目のグループの後方参照 (\w)\1 は aa、ll にマッチ
\p{Script=Hiragana} ひらがな(u フラグが必要) \p{Script=Katakana}+ カタカナ
\p{Script=Han} 漢字(u フラグが必要) [\p{Script=Han}\p{Script=Hiragana}]+
\u3042 \x41 Unicode/16 進数による文字指定 [\u3041-\u3096] ひらがな
置換の構文挿入される内容
$1、$2… n 番目のキャプチャグループ
$<name> 名前付きグループ
$& マッチした文字列全体
$` $' マッチより前/後の文字列
$$ $ 記号そのもの

正規表現チェッカーの使い方

  1. 「正規表現」欄にパターンを入力します。前後のスラッシュは不要です(例:\d{4}-\d{2}-\d{2})。
  2. 必要なフラグにチェックを入れます。g グローバル、i 大文字小文字を無視、m 複数行、s dotAll、u Unicode、y sticky です。
  3. 「テスト文字列」に文章を貼り付けると、「マッチ結果」にハイライトが表示され、「マッチ一覧」で位置とグループを確認できます。
  4. 置換を試すときは「置換文字列」に $1 や $<name> などを入力します。下に置換結果のプレビューが表示されます。

フラグの意味

g(global)はすべてのマッチを探し、付けない場合は最初の 1 件だけを返します。i は大文字と小文字を区別しません。m(multiline)を付けると ^ と $ が各行の先頭と末尾にマッチし、付けない場合は文字列全体の先頭と末尾だけを表します。s(dotAll)を付けると . が改行にもマッチします。

u(unicode)は文字列をコードポイント単位で扱います。絵文字や一部の漢字(𠮷 など)のようなサロゲートペアを 1 文字として扱えるほか、\p{Script=Hiragana} のような Unicode プロパティが使えるようになります。y(sticky)は lastIndex の位置からだけマッチさせるフラグで、字句解析器を書くときに使います。

ひらがな・カタカナ・漢字・全角文字の書き方

ひらがなは u フラグを付けて \p{Script=Hiragana}、カタカナは \p{Script=Katakana}、漢字は \p{Script=Han} と書くのが確実です。昔ながらの [ぁ-ん] や [ァ-ヶ] でも多くの場合は動きますが、長音記号「ー」は \p{Script=Katakana} にも [ァ-ヶ] にも含まれないため、カタカナ語を丸ごとマッチさせるなら [\p{Script=Katakana}ー]+ のように追加します。

全角数字は [0-9]、全角英字は [A-Za-z] です。JavaScript の \d と \w は半角の英数字にしかマッチせず、\b も日本語には効かない点に注意してください。

日本でよく使うパターン例

郵便番号は ^\d{3}-?\d{4}$ で「100-0001」と「1000001」の両方を許可できます。携帯電話番号は ^0[789]0-?\d{4}-?\d{4}$、日付の「2026年10月29日」は (\d{4})年(\d{1,2})月(\d{1,2})日 で年・月・日をそれぞれ取り出せます。

メールアドレスの完全な検証は正規表現では非常に難しいため、実務では ^[^\s@]+@[^\s@]+\.[^\s@]+$ で形式だけを確認し、確認メールの送信で実在を確かめるのが一般的です。金額の「1,280円」から数字だけを取り出すなら [\d,]+(?=円) のように先読みを使います。

破滅的バックトラック(ReDoS)とは

(a+)+$ や (\w+\s?)*$ のように繰り返しが入れ子になったパターンでは、「ほとんどマッチするのに最後で失敗する」文字列に対して、正規表現エンジンが指数関数的な数の組み合わせを試してしまいます。これが破滅的バックトラックで、ページが数分間固まることもあり、ReDoS 攻撃の原理にもなっています。

このツールではマッチ処理をバックグラウンドのワーカーで実行し、1.5 秒を超えると自動で中止します。マッチは最大 1,000 件までです。改善するには、入れ子の量指定子をなくす、隣り合う部分が同じ文字にマッチしないようにする、.* の代わりに [^"]* のように具体的に書く、といった方法があります。

よくある質問

どの正規表現エンジンで動いていますか?

ブラウザに組み込まれた JavaScript(ECMAScript)の正規表現エンジンです。JavaScript、TypeScript、Node.js ではそのまま同じ動作になります。Python、PHP、Java も基本的な構文は共通ですが、名前付きグループの書き方(Python は (?P<name>…))などの細かな違いがあります。

パターンの前後にスラッシュは必要ですか?

不要です。パターン本体だけを入力し、フラグはチェックボックスで選んでください。入力欄の横に /パターン/フラグ の形で表示されます。

最長一致と最短一致の違いは何ですか?

量指定子は標準で最長一致(貪欲)で、できるだけ多くの文字にマッチします。後ろに ? を付けると最短一致になります。「<a><b>」に対して <.+> は全体に、<.+?> は <a> と <b> に別々にマッチします。

\d で全角数字にマッチしないのはなぜですか?

JavaScript の \d は半角の 0–9 だけにマッチします。全角数字も含めたい場合は [0-90-9] のように書くか、u フラグを付けて \p{Nd} を使ってください。

置換で「2026-10-29」を「2026年10月29日」にするには?

パターンを (\d{4})-(\d{2})-(\d{2})、置換文字列を $1年$2月$3日 にします。名前付きグループを使う場合は $<year>年$<month>月$<day>日 のように書けます。「サンプルを読み込む」で実際の動きを確認できます。

入力した文字列はどこかに送信されますか?

いいえ。マッチ処理はすべてブラウザ内で行われます。前回のパターンと文字列はこの端末にだけ保存され、「クリア」で消去できます。

最終更新: ソースコードを見る