Python 検証 IP アドレス

Fariba Laiq 2023年6月21日
  1. Python で IP アドレスを検証する
  2. ipaddress モジュールを使用して Python で IP アドレスを検証する
  3. Python で RegEx.search() メソッドを使用して IP アドレスを検証する
  4. Python で IP アドレスを手動で検証する
Python 検証 IP アドレス

IP はインターネット プロトコルの略で、インターネットに接続されているすべてのコンピューターに割り当てられる一意のアドレスです。 IPv4IPv6 という 2つのバージョンの IP アドレスがあります。

IPv4 はドット付き 10 進数表記で表され、4つのオクテットで構成され、各オクテットには 0 ~ 255 の範囲の数値が含まれます。IPv6 アドレスには、4つの 16 進数の数字の 8つのグループが含まれ、それぞれが 16 ビットを表します。

グループはコロン (:) で区切られます。 このガイドでは、IPv4 アドレスを検証します。

Python で IP アドレスを検証する

IP アドレスの検証とは、入力 IP が有効かどうかを確認することを意味します。

例えば:

Input: 192.168.52.124
Output: Valid IP address

Input: 656.1.2.3
Output: Invalid IP address

ipaddress モジュールを使用して Python で IP アドレスを検証する

ipaddress は、タイプ (IPv4 または IPv6) に基づいて IP アドレスをチェックおよび分類するために使用される Python のモジュールです。 また、算術演算、比較などのさまざまな演算も実行します。

このモジュールには、IP アドレスを検証する ip_address() という名前のメソッドがあります。 この関数は文字列 IP を入力として取り、文字列 IP を IPv4 または IPv6 アドレスのオブジェクトに正常に変換できれば、入力された IP アドレスが有効であることを意味します。

そうしないと、IP が IPv4 または IPv6 アドレスのように見えないという値エラーが発生します。 次のコードで ipaddress モジュールをインポートし、コード全体を try-except ブロックに記述しました。

IP が有効な場合、例外は発生しません。そうでない場合、値エラーの例外は except ブロックによって処理されます。

ケース 1: 有効な IP アドレスの場合

# Python 3.x
import ipaddress

try:
    ip = ipaddress.ip_address("192.168.1.1")
    print("Valid IP Address")
except ValueError:
    print("Invalid IP Address")

出力:

#Python 3.x
Valid IP Address

ケース 2: 無効な IP アドレスの場合

# Python 3.x
import ipaddress

try:
    ip = ipaddress.ip_address("992.168.1.1")
    print("Valid IP Address")
except ValueError:
    print("Invalid IP Address")

出力:

#Python 3.x
Invalid IP Address

Python で RegEx.search() メソッドを使用して IP アドレスを検証する

IP アドレスを検証するもう 1つの方法は、正規表現を使用して有効な IP アドレスの定義済みパターンと照合することです。 次のコードでは、re モジュールの search() メソッドを呼び出して IP アドレスを検証し、正規表現と IP を引数として渡しています。

IP が有効な場合、このメソッドは True を返します。 それ以外の場合、False を返します。

コード例:

# Python 3.x
import re

ip = "192.168.2.3"
regex = "^((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])$"
if re.search(regex, ip):
    print("Valid IP Address")
else:
    print("Invalid IP Address")

出力:

#Python 3.x
Valid IP Address

Python で IP アドレスを手動で検証する

組み込みのライブラリ正規表現なしで IP アドレスを検証できます。 以下のコードで、この 3つの条件をチェックして IP アドレスを検証する関数を作成しました。

コード内で次のいずれかの条件が True の場合、IP は無効になります。

  1. オクテット数が 4 でない。
  2. オクテットには、整数以外のものが含まれます。
  3. オクテット内の数値が 0 ~ 255 の範囲外にある。

コード例:

# Python 3.x
def validate_ip_address(ip):
    octects = ip.split(".")
    if len(octects) != 4:
        return "Invalid IP"
    for number in octects:
        if not isinstance(int(number), int):
            return "Invalid IP"
        if int(number) < 0 or int(number) > 255:
            return "Invalid IP"
    return "Valid IP"


validate_ip_address("192.168.-1.1")

出力:

#Python 3.x
'Invalid IP'
著者: Fariba Laiq
Fariba Laiq avatar Fariba Laiq avatar

I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.

LinkedIn

関連記事 - Python IP Address