98. IPアドレスの有効チェック

少し工夫が必要  - accepted / - tried

IPv4

IPv4 アドレスには「.」で区切る四つの数字(octet)がある。数字は0から、255まで、例えば1.22.33.255。IPv4にはトータルで32のbitがある、故に最多2^32 = 4,294,967,296のIPv4アドレスが使える。

IPv4では冒頭の0が無効、01.01.01.01は無効なアドレスです。

IPv6

IPv6 アドレス は128のbitがあり、8つのグループ('hexadectet' または 'hextet'、まだ決まっていない)に別れる。各グループには16のbitがあり、なので4桁の16進数で表示できる、例えば2001:0db8:85a3:0000:0000:8a2e:0370:7334

IPv6では冒頭の0がOK。

これ以外のIPv6アドレスフォーマットもある、例えばZero compressionなど、けどこの問題では考慮しなくて良い。

タスク

文字列が有効なIPv4またはIPv6アドレスかどうかを確認する関数を作ってください。

質問

正規表現でこの問題を解決できますか?

常にもっといい方法を求めよう。

(23)