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"
建议使用IPAddress.Parse
和IPAddress.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('.');