メール構文、URL、IPv4、UUID、日付、数値に関する実用的な正規表現の例を、各パターンが実際に何をチェックするかの注記付きで閲覧できます。
ブラウザ内でローカルに実行| ユースケース | 正規表現 | 注記 |
|---|---|---|
| メールアドレス | ^[^\s@]+@[^\s@]+\.[^\s@]+$ |
実用的な構文チェック。配信には検証が必要です。 |
| HTTP または HTTPS URL | ^https?:\/\/[^\s]+$ |
スキームをチェックし、空白を拒否します。完全な検証には URL パーサーを使用してください。 |
| IPv4 アドレス | ^(?:(?:25[0-5]|2[0-4]\d|1?\d?\d)\.){3}(?:25[0-5]|2[0-4]\d|1?\d?\d)$ |
0 から 255 までのオクテットを受け付けます。 |
| UUID バージョン 1–5 | ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$ |
標準のハイフン形式と RFC バリアントビットをチェックします。 |
| ISO 形式の日付 | ^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$ |
YYYY-MM-DD の形をチェックしますが、月ごとの日数制限はチェックしません。 |
| 24時間形式 | ^(?:[01]\d|2[0-3]):[0-5]\d$ |
00:00 から 23:59 までの値を受け付けます。 |
| 16進数カラー | ^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$ |
RGB、RRGGBB、RRGGBBAA 表記に対応しています。 |
| セマンティック バージョン | ^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$ |
コア バージョンに加えて、任意のプレリリースとビルド メタデータに一致します。 |
| 符号付き整数 | ^-?\d+$ |
オプションのマイナス記号を許可 |
| 小数 | ^-?(?:\d+|\d*\.\d+)$ |
整数と小数に対応し、.5 のような値も含みます。 |
| URL スラッグ | ^[a-z0-9]+(?:-[a-z0-9]+)*$ |
小文字の ASCII 単語を単一のハイフンで区切ったもの。 |
| HTML のようなタグ | <\/?[A-Za-z][^>]*> |
単純な抽出のみに便利です。HTML の解析には HTML パーサーを使用してください。 |
| 先頭または末尾の空白 | ^\s+|\s+$ |
両端の空白を除去する場合はグローバルフラグを使用してください。 |
| 空行 | ^\s*$ |
各行を個別に評価するにはマルチラインモードを使用してください。 |
| 隣接する重複単語 | \b([A-Za-z]+)\s+\1\b |
大文字小文字を無視する場合は大文字小文字を区別しないモードを使用してください。 |
JavaScript、PCRE、Python、Java、.NET、Go、Ruby は正規表現の機能を完全には同じようには実装していません。後読み、名前付きグループ、Unicode プロパティ、所有量指定子、インラインモディファイアに依存する前に、対象エンジンを確認してください。
セキュリティ上重要な検証では、最初に入力を正規化し、明示的な長さ制限を適用し、データ形式に専用のパーサーがある場合はそれを使用してください。
フォーム、ログの 1 行、設定ファイルで確認することが多い値に向けた 15 個のパターンを載せています。メールアドレス、HTTP / HTTPS URL、IPv4 アドレス、UUID(バージョン 1〜5)、ISO 形式の日付、24 時間形式の時刻、16 進数カラー、セマンティックバージョン、符号付き整数、小数、URL スラッグ、HTML のようなタグ、先頭と末尾の空白、空行、隣接する重複単語です。
ページの本体はこの表だけで、入力欄も実行ボタンもありません。各行には、そのパターンが何を確認し、何を見逃すかを書いています。形式に一致することは実データの検証とは違います。日付の行は 2024-02-31 を受け付け、メールの行はそのアドレスに本当に届くかを知ることはできません。パターンは出発点として扱い、実際に動かすエンジンで試してください。
IPv4 の行は 0.0.0.0 と 255.255.255.255 を受け付け、256.1.1.1、1.2.3、1.2.3.4.5 を拒否します。UUID の行はハイフン付きの形式、バージョン 1〜5、RFC バリアントの 8・9・a・b を要求するため、バージョン 6 と 7 の識別子は一致しません。セマンティックバージョンの行は 1.0.0、1.0.0-alpha.1、1.0.0+build.1 を受け付け、v1.0.0 と 01.0.0 は失敗します。
いくつかの行は意図的に緩くしています。日付の行が 2024-02-31 を通すのは、パターンが月ごとの日数を知らないためで、2024-13-01 は通りません。時刻の行は 2 桁を前提とするので 09:30 は一致し、9:30 は一致しません。整数の行は +5 を拒否し、小数の行は .5 を許して 5. を拒否し、スラッグの行はハイフン 1 個と小文字だけを許します。
絞り込みは行全体を対象にします。タイトルだけではありません。octet で IPv4 の行が注記から、^https で URL の行がパターンそのものから、blank で空行の行が見つかります。カウンターは常に 15 行を基準に表示し、フォーカス中の検索欄は Escape で空になり、タッチ画面ではクリアボタンが同じ働きをします。
行のコピーボタンがコピーするのは正規表現だけです。アンカーは含まれ、引用符は付かないので、そのままソースコードやテストファイル、検証ルールに貼り付けられます。用途と注記はページに残ります。これらは文脈であり、パターンの一部ではありません。
3 つの行は正しいフラグと組み合わせて初めて役に立ちます。先頭と末尾の空白の行は両端を削るためにグローバルフラグ、空行の行は ^ と $ を行ごとに評価するためにマルチラインモード、隣接する重複単語の行は The the を重複と見なすために大文字小文字を無視するフラグが必要です。
より大きな制約は移植性です。後読み、名前付きグループ、Unicode プロパティ、絶対量指定子は JavaScript、PCRE、Python、Java、.NET、Go、Ruby で同じようには実装されていません。このページのパターンを持ち出すと、書かれたエンジンの前提も一緒に付いてきます。移植先のドキュメントを確認し、自分のサービスが実際に受け取る文字列で動くテストに式を残してください。