简介
ipaddr.js 是一个用于处理 IP 地址的 JavaScript 库,可以方便地将 IPv4 和 IPv6 的地址转换为各种格式,并进行地址验证和子网掩码计算等操作。它是一个开源的 npm 包,可以在 Node.js 和浏览器环境下使用。
安装
你可以通过 npm 来安装 ipaddr.js:
npm install ipaddr.js
如果你想在浏览器端使用,可以使用以下方式引入:
<script src="https://cdn.jsdelivr.net/npm/ipaddr.js/dist/ipaddr.min.js"></script>
使用方法
导入模块
在 Node.js 中导入 ipaddr.js:
const ipaddr = require('ipaddr.js');
在浏览器中,ipaddr.js 已经被定义在全局命名空间中,因此无需导入。
创建 IP 对象
你可以使用 ipaddr.parse()
方法来创建一个 IP 对象:
const ipv4 = ipaddr.parse('192.168.1.1'); const ipv6 = ipaddr.parse('2001:db8::1');
转换 IP 地址格式
ipaddr.js 可以将 IP 地址格式转换为各种形式:
ipv4.toIPv4Address(); // '192.168.1.1' ipv6.toIPv6Address(); // '2001:db8::1' ipv6.toRFC5952(); // '2001:db8::1' ipv6.toRFC4291(); // '2001:db8:0:0:0:0:0:1' ipv6.toNormalizedString(); // '2001:db8::1' ipv6.toString(); // '2001:db8::1'
验证 IP 地址
可以使用 ipaddr.isValid()
方法来验证一个字符串是否为有效的 IP 地址:
ipaddr.isValid('192.168.1.1'); // true ipaddr.isValid('2001:db8::1'); // true ipaddr.isValid('foo'); // false
判断 IP 类型
你可以使用 ipaddr.IPv4.isIPv4()
和 ipaddr.IPv6.isIPv6()
来判断 IP 地址的类型:
ipv4.kind(); // 'ipv4' ipv6.kind(); // 'ipv6' ipaddr.IPv4.isIPv4('192.168.1.1'); // true ipaddr.IPv6.isIPv6('2001:db8::1'); // true
获取子网掩码相关信息
你可以使用 ipaddr.parseCIDR()
方法来获取 IP 地址的 CIDR 表示法,并使用 ipaddr.subnetMaskFromPrefixLength()
方法来获取子网掩码:
-- -------------------- ---- ------- ----- ------ - ----------------------------------- ------------------ -- ---------------- ----------------------------------- -- ------------- ------------------------------------- -- --------------- ------------------------------- -- --------------- ------------------ -- --- --------------------------------------------- -- ---- ----- ---- - -------------------------------------- ---------------- -- ---------------
示例代码
示例代码:
-- -------------------- ---- ------- ----- ------ - --------------------- ----- ---- - ---------------------------- --------------------- -- ------------- ----- ---- - ---------------------------- --------------------- -- ------------- ------------------------------ -- ---- ---------------------------------- -- ---- ----- ------ - ----------------------------------- ----------------------------------- -- ------------- ------------------------------------- -- --------------- ------------------------------- -- - - ----------------------------------------------------------- -------- ----------------------------------------------------------------------------------