C#判断IP地址是否正确

  • C#判断IP地址是否正确已关闭评论
  • 117 次浏览
  • A+
所属分类:.NET技术
摘要

参考文章:C# 判断ip地址是否正确楼主提供的方法是通过IPAddress.TryParse()来判断字符串是否为有效地址,如果能解析IP地址,则为true。这个方法也蛮巧妙的,判断IP地址我第一反应是根据’.’分割字符串然后每个字符挨个判断,手动写格式判断啥的,效率低还麻烦,容易出错,看到楼主那个还挺好玩的,就试了一下。发现了一些问题:


参考文章:C# 判断ip地址是否正确

楼主提供的方法是通过IPAddress.TryParse()来判断字符串是否为有效地址,如果能解析IP地址,则为true。这个方法也蛮巧妙的,判断IP地址我第一反应是根据'.'分割字符串然后每个字符挨个判断,手动写格式判断啥的,效率低还麻烦,容易出错,看到楼主那个还挺好玩的,就试了一下。发现了一些问题:

IPAddress.TryParse()方法
	string ipStr = this.txt_IPAddress.Text; 	System.Net.IPAddress ip; 	if (System.Net.IPAddress.TryParse(ipStr,out ip)) 	{ 	    MessageBox.Show("IP地址合法"); 	} 	else 	{ 	    MessageBox.Show("IP地址不合法"); 	} 

这个方法没办法对输入的IP的格式进行判断,测试字符串是`10.1`在测试过程中是可以成功转换的,但是显然是不合理的。我觉得这个方法适合输入的IP地址的格式始终正确。

楼主评论区中有人提出可以用正则表达式来判断,既能判断格式也能判断数值,一举两得。

IsMatch()方法
	System.Text.RegularExpressions.Regex rx = new System.Text.RegularExpressions.Regex(@"((?:(?:25[0-5]|2[0-4]d|((1d{2})|([1-9]?d))).){3}(?:25[0-5]|2[0-4]d|((1d{2})|([1-9]?d))))"); 	if (rx.IsMatch(ipStr) == false) 	{ 		MessageBox.Show("IP地址不合法"); 		return; 	} 	else 	{ 		MessageBox.Show("IP地址合法"); 	} 

Perfect!