正则表达式匹配IP

时间:2012-09-06 05:11:21

标签: c# .net regex string

在C#中,给出一个如下格式的字符串:

http://10.242.33.210:5000

ftp://52.42.12.52:7000/

如何利用正则表达式仅检索IP(应丢弃端口)

对于上面两个例子,正则表达式应匹配10.242.33.210和52.42.12.52

3 个答案:

答案 0 :(得分:3)

您可以创建Uri并获取其Host属性

,而不是正则表达式
Uri url = new Uri("ftp://52.42.12.52:7000/");
Console.Write(url.Host);

答案 1 :(得分:2)

非常简单,实际上:

[\d.]+

将匹配一组数字和点。在您的情况下,没有端口的IP地址。您可以通过尝试符合IP的样子(0到255之间的数字,或者点之间只有一到三个数字)来使其变得更复杂,但如果您所期望的是如上所述的输入,那么这应该没问题。

快速Powershell测试:

PS> $tests = 'http://10.242.33.210:5000','ftp://52.42.12.52:7000/'
PS> $tests | %{ $_ -match '[\d.]+' | Out-Null; $Matches}

Name                           Value
----                           -----
0                              10.242.33.210
0                              52.42.12.52

答案 2 :(得分:1)

\b([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\b

相同但更短(来自zerkms):

\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b