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

时间:2015-10-07 23:30:17

标签: c# regex parsing

此问题已更新,以提高其评分

语言环境: C#

期望的结果:

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

从:

开始
"IP=100.5.10.15"

获取填充的string[] ipAdrSegments

ipSeg0 = "100"
ipSeg1 = "5"
ipSeg2 = "10"
ipSeg3 = "15"

2 个答案:

答案 0 :(得分:4)

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

原因描述为here。 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)

答案 1 :(得分:3)

您可以使用Split

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