本文へスキップ
ToolMug

よく使う正規表現パターン

日常の入力検証に使える正規表現をまとめています。メール、URL、ドメイン、IPv4、MAC アドレス、整数、小数、金額、日付、時刻、ユーザー名、強力なパスワード、16 進カラー、UUID、セマンティックバージョンに加え、中国の電話番号、身分証、郵便番号にも対応します。各パターンには一致例と不一致例があり、ワンクリックでコピーして入力欄でテストできます。

ブラウザ内で動作 — 入力した内容はアップロードされません

  • メールアドレス

    ドット、プラス記号、複数階層のドメインを含む一般的なメール形式

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

    ✓ name@example.com a.b+tag@mail.co.uk✗ name@ @example.com a b@example.com

  • URL(http/https)

    http:// または https:// で始まり、スペースを含まない

    /^https?:\/\/[^\s/$.?#][^\s]*$/i

    ✓ https://example.com/path?q=1 http://localhost:8080✗ ftp://example.com example.com https:// bad

  • ドメイン名

    英字・数字・ハイフンからなる複数階層のドメイン

    /^(?=.{1,253}$)(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,63}$/

    ✓ example.com sub.example.co.uk✗ -bad.com example exa_mple.com

  • IPv4 アドレス

    先頭に 0 を付けない 0〜255 の数値が 4 つ

    /^(?:(?: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)$/

    ✓ 192.168.1.1 8.8.8.8 255.255.255.0✗ 256.1.1.1 1.2.3 01.2.3.4

  • MAC アドレス

    コロンまたはハイフンで区切られた 16 進数のペア 6 組

    /^(?:[0-9A-Fa-f]{2}[:-]){5}[0-9A-Fa-f]{2}$/

    ✓ 00:1A:2B:3C:4D:5E 00-1a-2b-3c-4d-5e✗ 001A2B3C4D5E 00:1A:2B:3C:4D

  • 中国の携帯番号

    13〜19 で始まる 11 桁の数字(+86 を含まない)

    /^1[3-9]\d{9}$/

    ✓ 13800138000 19912345678✗ 12345678901 1380013800 +8613800138000

  • 中国の固定電話番号

    エリアコードと番号を、ハイフンで区切ってもよい

    /^0\d{2,3}-?\d{7,8}$/

    ✓ 010-12345678 0755-1234567 02112345678✗ 12345678 010-123

  • 中国の身分証番号(18 桁)

    地域コードの桁数と生年月日を確認します。最後の 1 文字は X の場合があります。チェックサムは確認しません。

    /^[1-9]\d{5}(?:18|19|20)\d{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[12]\d|3[01])\d{3}[\dXx]$/

    ✓ 11010519491231002X 440308199901010012✗ 11010519491331002X 1101051949123100

  • 中国の郵便番号

    6 桁の数字

    /^\d{6}$/

    ✓ 100000 010000✗ 10000 1000000

  • 中国のナンバープレート

    通常車は 7 文字、新エネルギー車は 8 文字

    /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼][A-HJ-NP-Z][A-HJ-NP-Z0-9]{4,5}[A-HJ-NP-Z0-9挂学警港澳]$/

    ✓ 京A12345 粤BD12345 沪A1234学✗ 京12345 京AI2345

  • 中国語の文字のみ

    一般的な CJK 漢字のみ

    /^[\u4e00-\u9fa5]+$/

    ✓ 中文 正则表达式✗ 中文abc

  • QQ 番号

    5〜11 桁、0 で始まらない

    /^[1-9]\d{4,10}$/

    ✓ 10001 123456789✗ 01234 1234

  • 銀行カード番号

    16〜19 桁。有効性には Luhn チェックも必要

    /^[1-9]\d{15,18}$/

    ✓ 6222021234567890123 4111111111111111✗ 0222021234567890 622202123456

  • 整数

    負の数も可

    /^-?\d+$/

    ✓ 0 -42 12345✗ 1.5 1e3

  • 正の整数

    先頭に 0 を付けない

    /^[1-9]\d*$/

    ✓ 1 100✗ 0 01 -1

  • 小数

    負の数も可。小数点の前後に数字が必要

    /^-?\d+(?:\.\d+)?$/

    ✓ 3.14 -0.5 42✗ .5 1. 1,000

  • 金額

    非負の数値で、小数点以下は最大 2 桁

    /^(?:0|[1-9]\d*)(?:\.\d{1,2})?$/

    ✓ 0 99.9 1234.56✗ 01.00 1.234 -1

  • 日付(YYYY-MM-DD)

    月は 01〜12、日は 01〜31。月ごとの日数は確認しません

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

    ✓ 2026-09-26 1999-12-31✗ 2026-13-01 2026-9-26 26-09-2026

  • 時刻(HH:MM[:SS])

    24 時間表記、秒は省略可

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

    ✓ 09:30 23:59:59✗ 24:00 9:30 12:60

  • ユーザー名

    英字で始まる、4〜16 文字の英数字とアンダースコア

    /^[a-zA-Z][a-zA-Z0-9_]{3,15}$/

    ✓ alice_01 Bob2026✗ 1alice ab bad-name

  • 強力なパスワード

    8 文字以上で、大文字・小文字・数字・記号を含む

    /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^\w\s]).{8,}$/

    ✓ Passw0rd! Aa1@aaaa✗ password Password1 Aa1@

  • 16 進カラーコード

    #RGB または #RRGGBB

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

    ✓ #fff #0F766E✗ fff #ffff #12345g

  • UUID

    標準の UUID 形式(バージョン 1〜8)

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

    ✓ 123e4567-e89b-42d3-a456-426614174000✗ 123e4567-e89b-42d3-c456-426614174000 123e4567e89b42d3a456426614174000

  • セマンティックバージョン

    MAJOR.MINOR.PATCH(プレリリースとビルド情報は省略可)

    /^(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)(?:-[\da-zA-Z-]+(?:\.[\da-zA-Z-]+)*)?(?:\+[\da-zA-Z-]+(?:\.[\da-zA-Z-]+)*)?$/

    ✓ 1.0.0 2.1.3-beta.1+build.5✗ 1.0 01.0.0 v1.0.0

  • HTML タグの組

    対応する開始タグと終了タグを見つけ、タグ名と内容を取得します

    /<([a-zA-Z][\w-]*)\b[^>]*>([\s\S]*?)<\/\1>/g

    ✓ <b>bold</b> <a href="#">link</a>✗ <b>unclosed plain text

  • 空行

    m フラグを使うと、空行や空白のみの行を見つけられます(削除などに便利)

    /^\s*$/m

    ✓ ✗ text

パターンは JavaScript の構文を使用しており、Java、Python、Go など多くの言語でもそのまま使えます(バックスラッシュのエスケープには注意してください)。これらは形式のチェックのみを行います。番号や ID が実在するかどうかはチェックサムや公式の確認が別途必要です。

使い方

  1. 形式を検索するか、カテゴリで絞り込みます。
  2. 「コピー」をクリックしてパターンを取得します。文字列に入れるときはバックスラッシュをエスケープしてください。
  3. カードの下の入力欄に文字を入力すると、一致するかすぐに確認できます。

オプションの説明

構文
JavaScript 用に書かれており、Java、Python、Go、PHP など多くの言語で使えます。文字列リテラルの中ではバックスラッシュを 2 つにしてください。
文字列全体の一致
検証パターンは ^ と $ で囲まれているため、入力全体が一致する必要があります。長い文章内を検索する場合はアンカーを外し、g フラグを追加します。
形式と有効性
パターンが確認するのは形式だけです。ID やカード番号が実在するかどうかは、チェックサムや公式の確認が必要です。

パターンの組み立て方: IPv4 の例

IPv4 のパターンは、検証用の正規表現の典型的な構造を示しています。1 つのオクテットを、順に試される 4 つの選択肢で書くことで、0〜255 だけを受け付けます。

25[0-5]      250–255
2[0-4]\d     200–249
1\d\d        100–199
[1-9]?\d     0–99, with no leading zero

パターン全体は (octet\.){3}octet で、^ と $ で囲まれています。そのため 192.168.1.1 は一致しますが、256.1.1.1、01.2.3.4、1.2.3 は一致しません。

形式と有効性は別

パターンが確認するのは形だけです。日付のパターンは、どの月も 30 日を許すので 2026-02-30 を受け付けますが、13 月は存在しないので 2026-13-01 は拒否します。実在する日付かどうかは、正規表現でチェックしたあと、使っている言語の日付ライブラリで値を解析して確認してください。

よくある質問

メールの正規表現が完全な RFC 対応ではないのはなぜですか?

RFC 5322 に完全準拠する正規表現は非常に大きく、現実の入力ミスをあまり防げません。緩やかな形式チェックを使い、確認メールでアドレスの存在を確かめてください。

複雑な正規表現はどうデバッグできますか?

正規表現テスターを使うと、すべての一致とグループをハイライトし、置換もテストできます。

Unicode に対応していますか?

多くは ASCII 入力を対象にしています。すべての文字体系の文字を受け入れる場合は、u フラグと \p{L} などの Unicode プロパティエスケープを追加してください。

プライバシー

このツールはすべてブラウザ内で動作します。ファイルやテキストはお使いの端末上で処理され、当サイトのサーバーにアップロードされることはありません。

関連ツール