使用正则表达式验证Powershell中的IP地址?

时间:2011-05-05 16:26:40

标签: regex powershell

我在PowerShell中有这个代码,它不起作用!有什么帮助吗?

我只是需要它来确保字符串是一个工作IP而不是999.999.999.999或普通字符串

只是一个IP [0 .... 255]。[0 .... 255]。[0 .... 255]。[0 .... 255]

if ($newIP -match "(\b(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]?)\b)") { $x = $True}

欢呼声

5 个答案:

答案 0 :(得分:25)

怎么样:

[bool]($newIP -as [ipaddress])

答案 1 :(得分:1)

这是一个更紧凑的:

\b(([01]?\d?\d|2[0-4]\d|25[0-5])\.){3}([01]?\d?\d|2[0-4]\d|25[0-5])\b

答案 2 :(得分:0)

甚至更短

^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$

答案 3 :(得分:0)

如果不是完整的IP

,这样可以正常工作
$Name = "1.1" ; [bool]($Name -as [ipaddress] -and ($Name.ToCharArray() | ?{$_ -eq "."}).count -eq 3) 

答案 4 :(得分:-2)

以下内容无效^(?:[0-9] {1,3}。){3} [0-9] {1,3} $ 例如,需要匹配IP地址中最后一个八位字节的部分 [0-9] {1,3} - 仅与0到255之间的数字不匹配 你最好的方法是潜水检查一个八位字节 250至255; 240至249; 100至199; 10到99;和 0到99。