C# 用C语言中的正则表达式将IP地址字符串解析为段#
此问题已更新,以提高其评级 语言环境: C# 预期结果:C# 用C语言中的正则表达式将IP地址字符串解析为段#,c#,regex,parsing,C#,Regex,Parsing,此问题已更新,以提高其评级 语言环境: C# 预期结果: 使用正则表达式从字符串解析IP地址 使用Regex.Split()将IP地址解析为各个段,并将它们作为单个字符串对象存储在数组中 首先是: "IP=100.5.10.15" 获取填充有以下内容的字符串[]ipAdrSegments: ipSeg0 = "100" ipSeg1 = "5" ipSeg2 = "10" ipSeg3 = "15" 您可以使用: 我建议您使用IPAddress.Parse和IPAddress.TryPa
- 使用正则表达式从字符串解析IP地址
- 使用
将IP地址解析为各个段,并将它们作为单个字符串对象存储在数组中Regex.Split()
"IP=100.5.10.15"
获取填充有以下内容的字符串[]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)开发人员为什么总是想使用正则表达式来实现简单的字符串函数?@Tim lol,但是如果你创建一个带有捕获组的正则表达式,那么一个循环来迭代所有捕获组,获取其内容并将其放入一个数组可以达到同样的目的!lol。我不理解downvoterSimple和clear的解决方案。它是有效的,th谢谢!你自己尝试过什么来解决这个问题?那些没有表现出任何努力的问题被认为是非常懒惰的,很可能会被关闭。欢迎来到Stack Overflow!看看周围。请阅读以了解可能在这里得到答案的问题类型。你的问题没有描述到目前为止您自己已经完成的工作。请先尝试自己解决问题。太好了!感谢您指向
System.Net.IPAddress
。
^(?:(?: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]?)$