正規表現 入門 - 実務で使う基本パターン20選

公開: 2026-05-13 / カテゴリ: 開発全般 / 読了 10分

正規表現は習得コストが高く敬遠されがちですが、実務で使うパターンは思ったより少ないです。本記事では 「最初の20パターンを覚えるだけで仕事の8割は片付く」 を目標に、ありがちな用例だけを抜粋して解説します。

正規表現テスター を別タブで開いて、コピペしながら読むのがおすすめです。

1. 基本の構文(30秒で復習)

記号意味
.任意の1文字a.c → abc, axc
*直前を 0回以上ab* → a, ab, abb
+直前を 1回以上ab+ → ab, abbb
?直前を 0または1回colou?r
{n,m}n回以上m回以下\d{3,4}
[abc]いずれか1文字[aiueo]
[^abc]以外[^0-9]
^ $行頭/行末^abc$
\d \w \s数字 / 単語文字 / 空白大文字は逆
(...)グループ化後方参照 \1

2. 実務で使うパターン20選

メールアドレス(実用版)

^[\w.+-]+@[\w-]+(\.[\w-]+)+$

RFC 完全準拠は不可能。これくらいの「ほぼ十分」で割り切るのがおすすめ。

URL

^https?://[\w.-]+(:\d+)?(/[\w./?%&=#~+-]*)?$

日本の郵便番号

^\d{3}-?\d{4}$

電話番号(日本・ハイフンあり/なし両対応)

^0\d{1,4}-?\d{1,4}-?\d{4}$

IPv4 アドレス

^((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$

日付 (YYYY-MM-DD)

^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$

時刻 (HH:MM:SS)

^([01]\d|2[0-3]):[0-5]\d:[0-5]\d$

日本語ひらがな / カタカナ

^[\u3040-\u309F]+$   # ひらがな
^[\u30A0-\u30FF]+$   # カタカナ

パスワード強度(8文字以上、大小英数記号)

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*]).{8,}$

16進カラーコード

^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$

クレジットカード番号(4桁ごと)

^\d{4}[- ]?\d{4}[- ]?\d{4}[- ]?\d{4}$

HTML タグ

<([a-z][a-z0-9]*)\b[^>]*>.*?</\1>

連続スペース → 1つ

\s+    # → " " で置換

全角→半角変換用(数字)

[0-9]   # マッチさせて Unicode 演算で -0xFEE0

リダイレクト URL からドメインだけ抜く

^https?://([^/]+)

JSON のキー部分

"([^"\\]*(\\.[^"\\]*)*)"\s*:

ファイル拡張子

\.(jpe?g|png|gif|webp|svg)$

UUID v4

^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$

連続改行 → 1つ

\n{2,}   # → "\n"

行頭の連続スペース(インデント検出)

^( +)

3. JavaScript と Python の違い

JavaScriptPython
マッチstr.match(/re/g)re.findall(r're', s)
置換str.replace(/re/g, 'x')re.sub(r're', 'x', s)
大文字無視/re/ire.IGNORECASE
複数行/re/mre.MULTILINE
名前付きグループ(?<name>...)(?P<name>...)

4. ハマりどころ


関連ツール: 正規表現テスター / テキスト差分 / JSON整形