javascript IPv4地址,子网掩码正则表达式
1、IPv4地址
var reg = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/;
2、可用合法的IPv4地址
以下IP地址应该过滤掉:
0.0.0.0/0,127.0.0.0/8(Loopback,回送测试loopback test所用),D类(224-239,组播地址)和E类地址(240~254,保留为研究测试使用)
//需要先用上面的IPV4检查IP是否有效,然后用该正则排除组播地址,loopback等地址
//第一位数介于1到223之间,且排除127和0开头
var reg = /^(?!(0|127|22[4-9]|2[4-5]\d)\.)/;
3、子网掩码表达式
//0.0.0.0和255.255.255.255过滤
var reg=/^(254|252|248|240|224|192|128)\.0\.0\.0|255\.(254|252|248|240|224|192|128|0)\.0\.0|255\.255\.(254|252|248|240|224|192|128|0)\.0|255\.255\.255\.(254|252|248|240|224|192|128|0)$/;
//0.0.0.0和255.255.255.255未过滤
var reg=/^(254|252|248|240|224|192|128|0)\.0\.0\.0|255\.(254|252|248|240|224|192|128|0)\.0\.0|255\.255\.(254|252|248|240|224|192|128|0)\.0|255\.255\.255\.(255|254|252|248|240|224|192|128|0)$/;
子网掩码、IP地址数、掩码长度对照表
3、主机号全0或者全1的计算方法
如果主机号全0,IP地址代表仅网络号指向的那个网段,该IP代表一个网段;如果主机号全1,IP地址代表网络号指向的全部主机,IP地址代表广播地址
计算方法:
子网掩码x按位与主机号h获得网络号A
子网掩码按位取反^x获得主机段全1的号码B
A按位 或 B就是A所在网络的广播地址C
C = x & h | ^x
192.168.1.10/255.255.0.0
IP地址 11000000 10101000 00000001 00001010 192.168.1.10
掩码 11111111 11111111 00000000 00000000 255.255.0.0
按位与 11000000 10101000 00000000 00000000 192.168.0.0(网络号)
掩码取反 00000000 00000000 11111111 11111111
IP地址 11000000 10101000 00000001 00001010 192.168.1.10
按位与 00000000 00000000 00000001 00001010 0.0.1.10(主机号)
掩码取反 00000000 00000000 11111111 11111111
网络号 11000000 10101000 00000000 00000000 192.168.0.0
按位或 11000000 10101000 11111111 11111111 192.168.255.255(广播地址)