IPv4 每段范围是 0-255,直接用 \d{1,3} 会错误接受 999。下面这条规则精确限定每段范围。
默认正则
/^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/
匹配标准点分十进制 IPv4,每段取值 0-255。
IPv4 由四段 0-255 的十进制数组成,段间用点号分隔。常见的 \d{1,3} 写法会接受 256、999 等非法值。
每段拆成三种情况:25[0-5] 覆盖 250-255,2[0-4]\d 覆盖 200-249,1\d\d 覆盖 100-199,[1-9]?\d 覆盖 0-99。
该规则不允许前导零(如 01.2.3.4),也不判断地址是内网还是公网。
192.168.1.10.0.0.0255.255.255.25510.0.0.12256.1.1.1192.168.101.2.3.41.2.3.4.5Q:为什么 256.1.1.1 不匹配?
每段被限定在 0-255,256 超出范围,因此整串不匹配。
Q:01.2.3.4 为什么也不匹配?
规则不允许前导零。如需允许,可把每段末项改为 \d{1,3},但会放宽校验。
Q:如何从日志里提取全部 IP?
去掉 ^ 与 $,在“搜索”模式中即可列出日志里的所有 IP,并可去重排序。
Q:能校验 IPv6 吗?
不能。IPv6 请使用专门的 IPv6 正则页面。