在JavaScript中验证IP地址可以通过正则表达式来实现。IPv4地址由四个0到255之间的数字组成,每个数字之间用点.
分隔。以下是一个验证IPv4地址的正则表达式示例:
function isValidIPv4(ip) {
const ipv4Regex = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
return ipv4Regex.test(ip);
}
// 使用示例
console.log(isValidIPv4('192.168.1.1')); // 输出: true
console.log(isValidIPv4('256.1.1.1')); // 输出: false
25[0-5]
匹配250到255之间的数字。2[0-4][0-9]
匹配200到249之间的数字。[01]?[0-9][0-9]?
匹配0到199之间的数字,其中[01]?
表示0或1可以出现0次或1次,[0-9][0-9]?
表示一个数字后面可以跟着0个或1个数字。如果需要同时验证IPv4和IPv6地址,可以使用以下正则表达式:
function isValidIP(ip) {
const ipv4Regex = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
const ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;
return ipv4Regex.test(ip) || ipv6Regex.test(ip);
}
// 使用示例
console.log(isValidIP('192.168.1.1')); // 输出: true
console.log(isValidIP('2001:0db8:85a3:0000:0000:8a2e:0370:7334')); // 输出: true
console.log(isValidIP('256.1.1.1')); // 输出: false
这个扩展的正则表达式可以同时验证IPv4和IPv6地址的格式。
领取专属 10元无门槛券
手把手带您无忧上云