ipv4地址校验需确保四段均为0–255无前导零的整数,推荐正则^(?:(?:25[0-5]|20-4|[01]?0-9?).){3}(?:25[0-5]|20-4|[01]?0-9?)$,或拆解为split+逻辑判断。

要严格校验 IPv4 地址格式,不能只靠简单匹配数字和点,必须确保每段是 0–255 的整数、无前导零(除非单独为 0),且共四段。
核心规则:每段必须是合法的 0–255 十进制整数
常见错误写法如 ^(\d{1,3}\.){3}\d{1,3}$ 会通过 999.999.999.999 或 01.02.03.04,这不符合真实 IP 规范。
合法段需满足:
- 0 单独存在(允许)
-
1–9 开头的 1–2 位数(如
5、42) - 10–99(两位数,不以 0 开头)
- 100–255(三位数,且百位只能是 1 或 2;若为 2,则十位 ≤ 5,个位 ≤ 5)
推荐正则表达式(严格版)
使用分组精确描述各范围:
^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
说明:
-
25[0-5]→ 匹配250到255 -
2[0-4][0-9]→ 匹配200到249 -
[01]?[0-9][0-9]?→ 匹配0–99,但排除前导零(如00、01不匹配,0和10可) - 整个结构确保恰好四段,用
\.分隔,首尾锚定^和$
JavaScript 中的实用校验函数
直接封装成可复用函数:
function isValidIPv4(ip) {
const regex = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
return regex.test(ip);
}
// 示例
console.log(isValidIPv4("127.0.0.1")); // true
console.log(isValidIPv4("255.255.255.255")); // true
console.log(isValidIPv4("0.0.0.0")); // true
console.log(isValidIPv4("01.02.03.04")); // false(含前导零)
console.log(isValidIPv4("256.1.1.1")); // false(超出范围)
console.log(isValidIPv4("192.168.1")); // false(段数不足)
注意边界情况与替代思路
正则虽强,但对极端可读性或调试友好性要求高时,也可拆解为逻辑判断:
- 先
split('.')成数组,检查长度是否为 4 - 对每段:
str === '0'或/^[1-9]\d{0,2}$/.test(str) && Number(str) - 避免隐式类型转换(如
"00" == 0为 true,但它是非法段)
正则适合一次性简洁校验;分步逻辑更适合需要详细报错(如指出哪一段非法)的场景。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











