首页 > 解决方案 > 验证 IP 地址的奇怪行为

问题描述

验证 IP 地址后出现奇怪的 IP 地址。例如:

$ipnr = "010.010.010.100"
[System.Net.IPAddress]$ip = $ipnr

$ipnr返回 8.8.8.100。

看到一个八位字节'07'没有问题。它开始于'08'。我必须验证,因为字符串可以有前导零。当然,我可以从八位字节中修剪和删除前导零,但发现它很奇怪,验证[IPAddress]不起作用。

标签: powershell

解决方案


带前导零的数字被解释为八进制数(八进制 010 == 十进制 8)。要解决此问题,请删除前导零,例如:

[Net.IPAddress]$ip = [int[]]$ipnr.Split('.') -join '.'

或像这样:

[Net.IPAddress]$ip = $ipnr -replace '(?<=^|\.)0+'

推荐阅读