例 |
正規表現の例 |
数値範囲 |
浮動小数点数 |
メールアドレス |
IPアドレス |
有効な日付 |
数値日付をテキストに変換 |
クレジットカード番号 |
完全な行の一致 |
重複行の削除 |
プログラミング |
2つの近接した単語 |
落とし穴 |
カタストロフィックバックトラッキング |
過剰な繰り返し |
サービス拒否 |
すべてをオプションにする |
繰り返しキャプチャグループ |
Unicodeと8ビットの混合 |
このサイトについてさらに |
はじめに |
正規表現クイックスタート |
正規表現チュートリアル |
置換文字列チュートリアル |
アプリケーションと言語 |
正規表現の例 |
正規表現リファレンス |
置換文字列リファレンス |
書評 |
印刷可能なPDF |
このサイトについて |
RSSフィードとブログ |
IPアドレスの一致は、正規表現の複雑さと正確さの間のトレードオフの良い例です。\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\bは、IPアドレスにうまく一致します。しかし、これも一致します。999.999.999.999有効なIPアドレスであるかのように。正規表現フレーバーがUnicodeをサポートしている場合、次のようなものにも一致する可能性があります。١٢٣.१२३.೧೨೩.๑๒๓。これが問題かどうかは、正規表現を適用するファイルやデータによって異なります。
IPアドレスの4つの数値をすべて0〜255に制限するには、次の正規表現を使用できます。これは、IPアドレスの4つの数値をそれぞれキャプチャグループに格納します。これらのグループを使用して、IP番号をさらに処理できます。フリースペースモードを使用すると、ページの幅に収まります。
\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.
(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.
(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.
(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b
上記の正規表現では、10〜99の数値には先頭のゼロが1つ、0〜9の数値には先頭のゼロが最大2つ許容されます。厳密に言うと、先頭のゼロを含むIPアドレスは8進表記を示しています。そのため、先頭のゼロを許可しないようにすることもできます。これには、少し長い正規表現が必要です。
\b(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.
(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.
(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.
(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\b
個々の数値へのアクセスが必要ない場合は、上記の3つの正規表現を量子化子を使用して短縮できます。
\b(?:\d{1,3}\.){3}\d{1,3}\b
\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}
(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b
\b(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}
(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\b
上記の正規表現は、単語境界を使用して、IPアドレスの先頭と末尾の数字がより長い英数字のシーケンスの一部にならないようにしています。これらの正規表現は、より長い文字列の中でIPアドレスを見つけるのに適しています。
文字列がIPアドレスのみから構成されていることを確認することで、ユーザー入力を検証したい場合は、単語境界を文字列の先頭と末尾のアンカーに置き換える必要があります。専用のアンカーを使用できます。\Aそして\z使用している正規表現フレーバーがこれらをサポートしている場合。
\A(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}
(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\z
そうでない場合は、^そして$を使用し、改行文字で一致するオプションがオフになっていることを確認する必要があります。
^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}
(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
| クイックスタート | チュートリアル | ツールと言語 | 例 | リファレンス | 書評 |
| 正規表現の例 | 数値範囲 | 浮動小数点数 | メールアドレス | IPアドレス | 有効な日付 | 数値日付をテキストに変換 | クレジットカード番号 | 完全行の一致 | 重複行の削除 | プログラミング | 2つの近接する単語 |
| 壊滅的なバックトラッキング | 過剰な繰り返し | サービス拒否攻撃 | すべてをオプションにする | 繰り返しキャプチャグループ | Unicodeと8ビットの混合 |
ページURL: https://regular-expressions.dokyumento.jp/ip.html
最終更新日: 2021年9月2日
サイト最終更新日: 2024年3月15日
Copyright © 2003-2024 Jan Goyvaerts. All rights reserved.