此问题已更新,以提高其评分
语言环境: C#
期望的结果:
Regex.Split()
将IP地址解析为单个段,并将它们作为单个字符串对象存储在数组中。从:
开始"IP=100.5.10.15"
获取填充的string[] ipAdrSegments
:
ipSeg0 = "100"
ipSeg1 = "5"
ipSeg2 = "10"
ipSeg3 = "15"
答案 0 :(得分:4)
我建议您使用IPAddress.Parse
和IPAddress.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('.');