在 C# 中,给定一个格式如下的字符串:
http://10.242.33.210:5000
ftp://52.42.12.52:7000/
如何利用正则表达式仅检索IP(端口应被丢弃)
对于上面的两个示例,正则表达式应匹配 10.242.33.210 和 52.42.12.52
其实很简单:
[\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
\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 到 255。我看到的解决方案并没有将范围限制在 0 到 255 之间。
^(25[0-5]|2[0-4]\d|[01]?\d\d?\.?){4}$