在前端开发中,经常需要验证IP地址的格式是否正确。而使用正则表达式去匹配IP地址,是一种常见且高效的做法。npm上有许多专门用于 IP 地址格式校验的包,其中一个常用的包就是 ip-regex
。本文将介绍如何使用 ip-regex
包来对 IP 地址进行格式校验。
安装
使用 npm
进行安装:
npm install ip-regex
基本用法
在 JavaScript 代码中引入 ip-regex
模块:
const ipRegex = require('ip-regex');
然后可以使用 test()
方法来检测一个字符串是否为 IP 地址的格式:
ipRegex().test('192.0.2.1'); // true ipRegex({exact: true}).test('192.0.2.1/24'); // false
这里我们通过传递一个可选对象参数 {exact: true}
来确保该字符串只匹配 IP 地址格式,不匹配以斜杠分隔的 CIDR 语法。如果不传递该可选参数,则默认会允许匹配 CIDR 语法。
还可以使用 exec()
方法来获取匹配结果:
ipRegex().exec('192.0.2.1')[0]; // '192.0.2.1'
同样地,如果希望只匹配 IP 地址格式,可以传递 {exact: true}
可选参数:
ipRegex({exact: true}).exec('192.0.2.1/24'); // null
高级用法
使用自定义分隔符
默认情况下,ip-regex
包只支持使用点号 .
作为 IP 地址中的分隔符。但是,如果需要支持其他分隔符(例如 -
或者 _
),可以使用 customSeparator
参数来自定义。
以下示例将演示如何使用 -
作为 IP 地址的分隔符:
const ipRegex = require('ip-regex')({customSeparator: '-'}); ipRegex().test('192-0-2-1'); // true ipRegex({exact: true}).test('192-0-2-1/24'); // false
支持IPv6地址
除了 IPv4 地址外,ip-regex
还可以匹配 IPv6 地址。只需要在引入模块时传递一个可选参数 {version: 'ipv6'}
即可:
const ipRegex = require('ip-regex')({version: 'ipv6'}); ipRegex().test('2001:0db8:85a3:0000:0000:8a2e:0370:7334'); // true ipRegex({exact: true}).test('2001:0db8:85a3:0000:0000:8a2e:0370:7334/64'); // false
需要注意的是,IPv6 地址的格式比较复杂,包括多种压缩和展开方式。如果需要支持这些方式,需要使用 ipaddr.js 这样的专门工具库。
结语
本文介绍了 ip-regex
包的基本用法以及高级用法,希望可以对大家在前端开发中的 IP 校验需求提供一些帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/44453