0
0

More than 3 years have passed since last update.

サブネットマスクの正当性検証

Last updated at Posted at 2021-01-26

サブネットマスク文字列のバリデーションコードです。
調べてもドンピシャの情報を見つけきれなかったので記録に残します。評価結果はいずれもbool値。
以下のようなそもそもIPv4アドレスとして正しいかの検証は、多くの言語でライブラリが存在すると思うので事前にそれを使用してください。

  • 2進表示が8ビットを超えていない(255以下である)
  • オクテットの個数が4

サブネットマスク記法

Java

Arrays.asList(String.join("", "255.192.0.0".split("\\."))).forEach(x -> {
    String binStr = Integer.toString(Integer.parseInt(x));
    binStr = "00000000" + binStr;
    int len = binStr.length()
    binStr.substring(len - 8, len);
}).matches("^1*0*$");

Javascript

"255.192.0.0".split(".")
.map(x => ('00000000' + Number(x).toString(2)).slice(-8))
.join("").match(/^1*0*$/) != null

CIDR記法

仮に192.168.1.1/10などであるとします。

Java

"10".matches("^[0-9]{1,2}$") && Arrays.asList(IntStream.rangeClosed(0, 32).toArray()).contains(Integer.parseInt("10"));

Javascript

'10'.match(/^[0-9]{1,2}$/) != null && [...Array(33).keys()].indexOf(Number('10'))
0
0
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0