header

正規表現でIPアドレスかどうか調べる

(1/3)

今回は、正規表現を使って、与えられた文字列が IP アドレスかどうか調べるプログラムを作ってみることにする。

IPアドレス

IPアドレス(IPv4)の構造は

A.B.C.D  (※)A〜Bは0以上255以下の整数

である。
これを正規表現で表すと、

/^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/

となる。なお、この正規表現だけでは「0以上255以下の整数」のチェックができないので、PHP のロジックでチェックすることにする。

今回使った正規表現

^
文字列の先頭、または行終端文字の直後 にマッチする。
$
文字列の末尾、または行終端文字の直前 にマッチする。
[ ]
文字クラス。
この中に記述された文字の並びのうちの1文字を表す。
-
文字の範囲指定。
a-z はアルファベット小文字すべてに、A-Zはアルファベット大文字すべてに、0-9は数字すべてにマッチする。
{a,b}
直線の文字の a 回以上、b 回以下の繰り返し。
ここでは、文字クラス [0-9] に記述される数字が 1 桁以上 3 桁以下であることを示す。
( )
サブパターン。
マッチングだけであれば不要だが、4つの整数部分を取り出して定義域チェック(0 以上 255 以下)を行うために、 マッチした部分文字列に番号を付けてやる必要がある。その場合にサブパターンを用いる。

サンプル・プログラムを次のページに掲載する。

(この項つづく)