使用JS,写一个函数接收两个ip地址,求ip地址数量,要求支持ipv4和ipv6
时间: 2024-01-24 08:02:39 浏览: 123
js获取ip地址
4星 · 用户满意度95%
可以使用JavaScript中的正则表达式来判断IP地址类型,然后分别计算IP地址数量。以下是一个示例函数:
```javascript
function getIPAddressCount(ip1, ip2) {
// 判断IPv4地址
const ipv4Reg = /^(\d{1,3}\.){3}\d{1,3}$/;
if (ipv4Reg.test(ip1) && ipv4Reg.test(ip2)) {
const ip1Array = ip1.split('.');
const ip2Array = ip2.split('.');
let count = 1;
for (let i = 0; i < 4; i++) {
count *= (parseInt(ip2Array[i]) - parseInt(ip1Array[i]) + 1);
}
return count;
}
// 判断IPv6地址
const ipv6Reg = /^([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$/;
if (ipv6Reg.test(ip1) && ipv6Reg.test(ip2)) {
return BigInt('0x' + ip2.replace(/:/g, '')) - BigInt('0x' + ip1.replace(/:/g, '')) + BigInt(1);
}
// 其他情况
return -1;
}
// 示例用法
console.log(getIPAddressCount('192.168.0.1', '192.168.0.10')); // 10
console.log(getIPAddressCount('2001:0db8:85a3:0000:0000:8a2e:0370:7334', '2001:0db8:85a3:0000:0000:8a2e:0370:7340')); // 7
console.log(getIPAddressCount('192.168.0.1', '2001:0db8:85a3:0000:0000:8a2e:0370:7334')); // -1
```
注意,在计算IPv6地址数量时,需要使用`BigInt`类型,因为IPv6地址数量非常大,超出了JavaScript中`Number`类型的范围。
阅读全文