我知道这个帖子ISN”新的,但是,我已经尝试了几种建议的解决方案,并且他们没有一个能够像我在Justin Jones提供的链接中找到的那样工作得很好。他们有很多IP地址,但这是列表中的顶部,并且使用LinqPad(我爱LinqPad),大部分测试都是非常好的。我建议利用这一个,而不是任何先前提供的表达式:
^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$
给在LinqPad一个镜头有以下:
// \b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b 355.168.0.1 = 355.168.0.1 (Not Correct)
// ((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]?) 355.168.0.1 = 55.168.0.1 (Not correct)
// \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} 355.168.0.1 = 355.168.0.1 (Not Correct)
// ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ 355.168.0.1 = 355.168.0.1 (Not Correct)
// ^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$ 355.168.0.1 = 355.168.0.1 (Not Correct)
// ^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$ 355.168.0.1 = No Match (Correct)
Match match = Regex.Match("355.168.0.1", @"^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$");
if (match.Success) {
Console.WriteLine(match.Value);
}
else {
Console.WriteLine("No match.");
}
有了新的正则表达式,这是无效的这是正确的: 355.168.0.1 =不匹配,正如注释中所述。
我欢迎任何调整,因为我正在使用表达式的工具,并一直在寻找更好的方法来做到这一点。
UPDATE:我创建了一个.NET Fiddle项目,提供此表达式的工作示例以及测试各种值的IP地址列表。随意修改它,尝试各种值来运用这个表达式,并提供任何输入,如果你发现表达式失败的情况。 https://dotnetfiddle.net/JoBXdI
更新2:更重要的是指这个帖子:Another related question.
谢谢,我希望这有助于!
除了表达式,你不应该看`Regex.Matches`而不是`Split`吗? – Ani 2011-02-03 19:38:46
[正则表达式匹配主机名或IP地址?]的可能重复(http://stackoverflow.com/questions/106179/regular-expression-to-match-hostname-or-ip-address) – 2011-02-03 19:40:56
`999.999.999.999` ? – Andrey 2011-02-03 19:47:04