サブネットマスク文字列のバリデーションコードです。
調べてもドンピシャの情報を見つけきれなかったので記録に残します。評価結果はいずれも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'))