如何评估IP?

pek*_*pek 8 regex language-agnostic validation

如何确定字符串是否为IP地址?无论是IPv4还是IPv6

什么是最少和最多的字符?

我认为这将是一个正则表达式的答案.

Mic*_*ren 6

在.NET中有一个IPAddress类型,它有一个方便的方法TryParse.

例:

if(System.Net.IPAddress.TryParse(PossibleIPAddress, validatedIPAddress)){
    //validatedIPAddress is good
}

// or more simply:
bool IsValidIPAddress(string possibleIP){
    return System.Net.IPAddress.TryParse(PossibleIPAddress, null)
}
Run Code Online (Sandbox Code Playgroud)


小智 6

我以前做过这个,但我喜欢Raymond Chen的帖子:

http://blogs.msdn.com/oldnewthing/archive/2006/05/22/603788.aspx

他基本上主张将正则表达式用于他们擅长的东西:解析出令牌.然后评估结果.他的榜样:

function isDottedIPv4(s)
{
 var match = s.match(/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/);
 return match != null &&
        match[1] <= 255 && match[2] <= 255 &&
        match[3] <= 255 && match[4] <= 255;
}
Run Code Online (Sandbox Code Playgroud)

这样看起来容易得多,并且知道它应该做什么.


Bil*_*ard 4

对于 IPv4,您可以使用此正则表达式。

\b(?:(?: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]?)\b
Run Code Online (Sandbox Code Playgroud)

它看起来相当复杂,但它的工作原理是将每个四边形限制为数字 0-255。