正则表达式匹配IP

问题描述 投票:0回答:4

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

http://10.242.33.210:5000

ftp://52.42.12.52:7000/

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

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

c# .net regex string
4个回答
3
投票

您可以创建一个 Uri 并获取其 Host 属性,而不是正则表达式

Uri url = new Uri("ftp://52.42.12.52:7000/");
Console.Write(url.Host);

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

0
投票
\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

0
投票

这是一个简单易读的解决方案,范围从 0 到 255。我看到的解决方案并没有将范围限制在 0 到 255 之间。

^(25[0-5]|2[0-4]\d|[01]?\d\d?\.?){4}$
© www.soinside.com 2019 - 2024. All rights reserved.