c#中使用正则表达式将IP地址字符串解析为多个段

本文关键字:字符串 地址 正则表达式 IP | 更新日期: 2023-09-27 18:16:28

这个问题已经更新,以提高其评级

语言环境:c#

期望结果:

  • 使用正则表达式从字符串中解析IP地址
  • 使用Regex.Split()将IP地址解析为单独的段,并将它们作为单独的字符串对象存储在数组中。
开始

:

"IP=100.5.10.15"

得到一个包含:

string[] ipAdrSegments
ipSeg0 = "100"
ipSeg1 = "5"
ipSeg2 = "10"
ipSeg3 = "15"

c#中使用正则表达式将IP地址字符串解析为多个段

建议使用IPAddress.ParseIPAddress.TryParse方法解析IP地址字符串

原因如下所述。IPv4地址的字符串表示比用点符号分隔的4个数字要复杂得多。例如,以下字符串是同一IP地址的正确表示:

74.125.226.4(点分十进制)

1249763844(十进制)

0112.0175.0342.0004(点八进制)

011237361004(八进制)

0x4A.0x7D.0xE2.0x04(虚线十六进制)

0x4A7DE204(平十六进制)

74.0175.0xe2.4(ಠ_ಠ)

如果你仍然想手动解析IP地址,并且只允许使用4位数的点分十进制表示,我建议你使用这样的东西:

^(?:(?: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]?)$

注意:这个正则表达式仍然不正确,因为它允许前导零(014.2.3.4)

你可以直接使用Split:

string ip = "100.5.10.15";
string[] parts = ip.Split('.');