正規表現チートシート

ステップ 1 / 3 33%

正規表現エンジンを選択

使用するエンジンから始めてください。選択に当てはまらない構文は参照から非表示になります。

このインタラクティブなリファレンスで、よく使う正規表現の構文をコードに貼り付ける前に比較できます。JavaScript、PCRE2/PHP、Python re、.NET、または全エンジン表示を選び、トピックを選んで表示中の項目を検索してください。同じように見えるトークンでも、あるエンジンではコンパイルに失敗したり別の意味になったりするため、エンジン固有の構文を明示しています。検索とコピーはブラウザ内で行われ、このページはあなたのテキストに対してパターンを実行しません。

正規表現チートシートの使い方

  1. 1

    エンジンを選ぶ

    JavaScript、PCRE2/PHP、Python re、.NET を選ぶか、すべて比較します。対象を絞った表示では、選んだエンジンに当てはまらない項目は除かれます。

  2. 2

    トピックを選ぶ

    アンカー、文字クラス、量指定子、グループ、先読み・後読み、よくあるパターンの形、フラグとオプションを開きます。

  3. 3

    ローカルで検索してコピーする

    ページ内でトークンと説明を検索し、トークンを選んでコピーします。検索語はサーバーへ送られず、URL にも追加されません。

  4. 4

    実際のランタイムで確認する

    プロジェクトで使うエンジン、フラグ、API で最終表現をコンパイルし、テストしてください。このリファレンスは構文を説明するもので、本番データの検証は行いません。

互換性が重要です

正規表現は一つの共通言語ではありません。このクイックリファレンスでは、似て見えてもエンジン間でそのまま移植できない構文を分けています。

機能 JavaScript RegExp PCRE2 / PHP Python re .NET
絶対開始 \A なし \A \A \A
絶対終了 \z なし \z \Z \z
Unicode プロパティ \p{L} u または v モードを使用 対応 組み込み re では非対応 対応
名前付きキャプチャ (?<name>...) (?<name>...) または (?P<name>...) (?P<name>...) (?<name>...)
名前付き後方参照 \k<name> \k<name> または (?P=name) (?P=name) \k<name>
グローバル照合 g フラグと照合 API preg_match_all などの反復照合 API finditer などの反復照合 API Matches などの反復照合 API

\d\w には特に注意が必要です。JavaScript では \d は ASCII の数字 0-9 のままで、u を付けても \w はほぼ ASCII の単語文字です。他のエンジンではモードや設定により Unicode 対応の規則を適用できます。Unicode の挙動が重要なら、必要なプロパティまたはクラスを正確に書いてテストしてください。

アンカーと境界

トークン 表すもの 移植性に関する注意
^ 入力の開始、または複数行モードでの行頭 4 系統すべてで利用可能です。
$ 入力の終了、または複数行モードでの行末 4 系統すべてで利用可能ですが、末尾改行の詳細は異なります。
\b 単語境界 単語文字と見なされるものはエンジンとモードに依存します。
\A 対象文字列の絶対開始 PCRE2、Python、.NET。JavaScript では不可です。
\z 対象文字列の絶対終了 PCRE2 と .NET。Python では \Z を使います。
\Z Python の対象文字列終端 PCRE2 と .NET では末尾改行の直前にも一致し得ます。絶対終端には \z を使います。

グループと先読み・後読み

トークン 意味 重要な制限
(abc) キャプチャグループ 4 系統すべてで利用可能です。
(?:abc) 非キャプチャグループ 4 系統すべてで利用可能です。
(?<name>abc) 名前付きグループ JavaScript、PCRE2、.NET の構文です。
(?P<name>abc) 名前付きグループ Python の構文で、PCRE2 も受け付けます。
(?=abc) / (?!abc) 肯定 / 否定先読み 4 系統すべてで利用可能です。
(?<=abc) / (?<!abc) 肯定 / 否定後読み 4 系統すべてで対応していますが、許容される後読みの長さは異なります。

後読みはよくある移植性の落とし穴です。Python re では固定長の後読みが必要です。JavaScript の対応は、デプロイするランタイムに依存します。チートシートの行だけを頼りにせず、対応する最も古いランタイムで正確なパターンをテストしてください。

完全な検証ではなくパターンの形

一般的なパターンの項目は、意図的に形だけを説明しています。たとえば ^\d{4}-\d{2}-\d{2}$2026-99-99 も受け入れ、単純なメール形式のパターンではメールアドレスの完全な標準を実装できません。最初の形式確認の後、日付、URL、構造化識別子は適切なライブラリで解析してください。

例のパターン 証明できないこと
符号付き小数 ^-?\d+(?:\.\d+)?$ ロケールの小数記号、桁区切り、数値範囲、精度。
メール形式のテキスト ^[\w.+-]+@[\w-]+\.[\w.-]+$ 配信可能で標準を完全に満たすメールアドレス。
HTTP(S) URL 形式のテキスト ^https?://\S+$ 安全で解析可能または到達可能な URL。
ISO 日付形式 ^\d{4}-\d{2}-\d{2}$ 実在する暦の日付。
ASCII スラッグ文字 ^[A-Za-z0-9_-]+$ アプリケーション固有の大文字小文字、区切り、予約語の規則。

フラグとオプション

ホスト API を確認せずにフラグをコピーしないでください。JavaScript は /pattern/g と書きますが、Python は re.Ire.X を渡し、.NET は RegexOptions を使用でき、PCRE2/PHP は区切り文字と末尾修飾子をよく使います。g は JavaScript のグローバル照合フラグであり、PCRE2 の修飾子ではありません。PCRE2 の反復照合は通常 PHP API で制御します。拡張モード x は PCRE2、Python、.NET で使えますが、JavaScript のフラグではありません。

よくある質問

いいえ。これはブラウザ内の検索とコピー操作を備えた構文リファレンスです。正規表現テスターと、アプリケーションで使用するランタイムでパターンをコンパイルし、代表的な入力をテストしてください。

見慣れたトークンでも移植できないことがあります。たとえば Python の組み込み re は名前付きグループに (?P<name>…) を使い、JavaScript は (?<name>…) を使います。また JavaScript は絶対アンカー \A や \z をサポートしません。

いいえ。JavaScript では \d は ASCII の数字で、u フラグを付けても \w はほぼ ASCII の単語文字です。他のエンジンには別の Unicode モードやオプションがあるため、データに必要な挙動をテストしてください。

これらは簡単な形の確認に限って使ってください。メールアドレスが配信可能であること、URL が安全または到達可能であること、日付が暦に存在することは証明しません。本番の規則には専用のパーサーまたはバリデーターを使ってください。

関連ツール