正規表現でIPアドレスを検証する(と、より良い方法)

最終更新: 2026-05-30

正規表現はIPのを照合できますが、本当の検証(範囲やIPv6の短縮)はパーサに任せる方が確実です。

IPv4の正規表現

各オクテットは0〜255:

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

これだけでも煩雑で、IPv6の正規表現:: 短縮や埋め込みIPv4を含む)はさらに複雑でミスしやすくなります。

パーサを使う

多くの言語は1行で正しく検証できます:

import ipaddress
def is_ip(s):
    try: ipaddress.ip_address(s); return True
    except ValueError: return False
ok := net.ParseIP(s) != nil
import net from "node:net";
const ok = net.isIP(s) !== 0; // 4, 6, 0 のいずれか

詳しくは IPプログラミング・サンプル集

正規表現は素早い形式チェック専用に。「使えるアドレスか、許可範囲内か」を判定するならパーサ+CIDR判定を使いましょう。範囲の確認は サブネット計算機 が便利です。

参考資料