正規表現レシピ集のイメージ

正規表現は強力ですが、毎回ゼロから組み立てるのは骨が折れます。この記事では、そのままコピーして使える実務向けの正規表現レシピを、何にマッチするのかという説明とセットで紹介します。あわせて、文字数カウントやエスケープといった日常的なテキスト処理のコツもまとめました。

正規表現の基礎文法(メタ文字や量指定子の意味)から学びたい方は、先に正規表現の基本を読むと理解が早まります。

まず押さえる:量指定子と文字クラス

レシピの前に、頻出するパーツだけ確認しておきます。

パターン意味
\d数字1文字([0-9]
\w英数字とアンダースコア
\s空白文字(半角スペース・タブ・改行など)
.任意の1文字(改行を除く)
+直前を1回以上
*直前を0回以上
?直前を0回または1回
{2,4}直前を2〜4回
^ / $行頭 / 行末

コピペで使えるレシピ

メールアドレスの抽出

実務で「完全に正しい」メール正規表現は複雑すぎて非現実的です。ログやテキストからの抽出用途なら、次の実用パターンで十分です。

[\w.+-]+@[\w-]+\.[\w.-]+

[email protected] のようなアドレスにマッチします。

URLの抽出

https?://[\w./?=&%#-]+

http://https:// の両方に対応します(s? が「sは0回か1回」を表します)。

日付(YYYY-MM-DD)の検証

^\d{4}-\d{2}-\d{2}$

2026-06-19 のような形式にマッチします。^$ で「行全体がこの形式か」を厳密にチェックしています。

全角・連続した空白の除去(置換)

コピペ由来の余分な空白を整理する定番です。

検索:  \s+
置換:  (半角スペース1つ)

\s+ は連続する空白の塊にマッチするので、まとめて1つの空白に畳めます。

キャプチャグループで並べ替え

姓 名名 姓 に入れ替えるなど、置換でグループを参照できます。

検索:  (\S+)\s+(\S+)
置換:  $2 $1

Taro YamadaYamada Taro のように変換できます($1 $2 が捕捉した部分の参照)。

正規表現でつまずきやすい点

  • 貪欲マッチ: <.+> は「最初の < から最後の > まで」を一気に飲み込みます。最短一致にするには <.+?> のように ? を付けます。
  • メタ文字のエスケープ: . ? ( [ などをそのまま検索したいときは \. のようにバックスラッシュでエスケープします。
  • 改行をまたぐ: . は通常改行にマッチしません。複数行を扱うときは [\s\S] を使うか、ツール側のフラグ(s フラグ)を有効にします。

書いたパターンが意図どおり動くかは、正規表現テスター で実際のテキストに当ててハイライトを確認するのが確実です。置換のプレビューもその場で見られます。

正規表現が要らない「テキスト処理」も道具に任せる

正規表現の出番ではない、地味だけど頻出する作業もあります。

  • 文字数カウント: SNS投稿やメタディスクリプションの文字数チェック。
  • HTMLエスケープ: < > & を実体参照に変換して、タグをそのまま表示する。
  • 大文字・小文字変換やケース変換: snake_casecamelCase の相互変換。
  • 重複行の削除・ソート: リストの整理。

こうした処理はテキスト整形ツールにまとめてあります。正規表現と使い分けることで、「テキストとの細かい格闘」を減らせます。

よくある質問

正規表現の ? は2つの意味があると聞きました

そのとおりです。a? のように量指定子として使うと「直前を0回か1回」を意味します。一方 .+? のように量指定子の直後に付けると「最短一致(非貪欲)」の指定になります。位置によって役割が変わる点に注意してください。

メールアドレスを厳密に検証したいのですが

RFCに完全準拠した正規表現は実用に耐えないほど複雑になります。実務では「@ を1つ含み、前後に文字がある」程度の緩い検証にとどめ、本当に有効かは確認メールの送信で担保するのが一般的です。抽出用途なら本文中のパターンで十分です。

言語によって正規表現の挙動は違いますか

基本構文は共通ですが、フラグの指定方法(JavaScriptの /pattern/gi など)や、先読み・後読みのサポート状況に差があります。ブラウザ上のテスターはJavaScriptエンジンで動くため、フロントエンドのコードに組み込む前の確認に向いています。