[C#]判断是否是合法的IP4,IP6地址
判断一个字符串如果没有端口的话,利用IPAddress.TryParse很好判断,那么有端口怎么判断呢,正则表达式?还是其他方式?
关键代码:
/// <summary> /// 判断是否是合法的IP4,IP6地址 /// </summary> /// <param name="ip">需要判断的字符串</param> /// <returns>合法则返回host部分,若不合法则返回空</returns> public static string GetIPAddress(string ip) { string _ipAddress = string.Empty; if (!string.IsNullOrEmpty(ip)) { UriHostNameType _hostType = Uri.CheckHostName(ip); if (_hostType == UriHostNameType.Unknown)//譬如 "192.168.1.1:8060"或者[2001:0DB8:02de::0e13]:9010 { Uri _url; if (Uri.TryCreate(string.Format("http://{0}", ip), UriKind.Absolute, out _url)) { _ipAddress = IPAddressTryParse(_url.Host); } } else if (_hostType == UriHostNameType.IPv4 || _hostType == UriHostNameType.IPv6) { _ipAddress = IPAddressTryParse(ip); } } return _ipAddress; } private static string IPAddressTryParse(string ip) { string _ipAddress = string.Empty; IPAddress _ipAdr; if (IPAddress.TryParse(ip, out _ipAdr)) { _ipAddress = _ipAdr.ToString(); } return _ipAddress; }
单元测试:
[TestMethod()] public void GetIPAddressTest() { string _ip4Address1 = "192.168.1.1"; string _expected1 = "192.168.1.1"; string _actual1 = NetWorkToolV2.GetIPAddress(_ip4Address1); Assert.AreEqual(_expected1, _actual1); string _ip4Address2 = "192.168.1.1:8060"; string _expected2 = "192.168.1.1"; string _actual2 = NetWorkToolV2.GetIPAddress(_ip4Address2); Assert.AreEqual(_expected2, _actual2); string _ip6Address3 = "2001:0DB8:02de::0e13"; string _expected3 = "2001:DB8:2de::e13"; string _actual3 = NetWorkToolV2.GetIPAddress(_ip6Address3); Assert.AreEqual(_expected3, _actual3,true); string _ip6Address4 = "[2001:0DB8:2de::e13]:9010"; string _expected4 = "2001:DB8:2de::e13"; string _actual4 = NetWorkToolV2.GetIPAddress(_ip6Address4); Assert.AreEqual(_expected4, _actual4, true); string _ipAddress5 = "erroriptest"; string _expected5 = string.Empty; string _actual5 = NetWorkToolV2.GetIPAddress(_ipAddress5); Assert.AreEqual(_expected5, _actual5); }
测试结果:
希望有所帮助!
[C#]判断是否是合法的IP4,IP6地址的更多相关文章
- C#检查字符串是否是合法的HTTP URL地址的代码
在研发过程,把开发过程较好的一些内容片段记录起来,下面的内容是关于C#检查字符串是否是合法的HTTP URL地址的内容,应该是对各位有较大用处. protected string HTTPChecke ...
- python学习-判断是否是私网IP地址
判断是否是私网IP地址 私网IP地址范围如下: 192.168.0.0-192.168.255.255 172.16.0.0-172.31.255.255 10.0.0.0-10.255.255.25 ...
- c#判断是否为合法的email地址
题目要求: class Program { static void Main(string[] args) { Console.WriteLine("请输入正确的邮箱地址,以 @sina.c ...
- 判断是否是合法的IP地址
ipv4 import re #简单的匹配给定的字符串是否是ip地址,下面的例子它不是IPv4的地址,但是它满足正则表达式 if re.match(r"^(?:[0-9]{1,3}\.){3 ...
- Asp.net中的一个判断session是否合法的做法
1 if (Session["UserID"] == "" || Session["UserID"] == null) 2 { 3 ...
- 判断是否是有效的IPV4地址
参考链接: https://blogs.msdn.microsoft.com/oldnewthing/20060522-08/?p=31113 http://www.cnblogs.com/txw19 ...
- 解决ios开发中不合法的网络请求地址
NSString *const kWebsite = @"http://image.baidu.com/search/index?tn=baiduimage&ipn=r&ct ...
- js判断非127开头的IP地址
js验证回送地址,IP地址不能以127开头 回送地址(127.x.x.x)是本机回送地址(Loopback Address) var ipNotStartWith127 = function(ip) ...
- Solidity的地址 数组如何判断是否包含一个给定的地址?
Q: given address[] wallets. What is the correct method to check that the list contains a given addre ...
随机推荐
- HDU 5071 Chat(2014鞍山B,模拟)
http://acm.hdu.edu.cn/showproblem.php?pid=5071 Chat Time Limit: 2000/1000 MS (Java/Others) Memory ...
- [React Native] Using the WebView component
We can access web pages in our React Native application using the WebView component. We will connect ...
- android Animation 动画效果介绍
Android的animation由四种类型组成 XML中 alpha 渐变透明度动画效果 scale 渐变尺寸伸缩动画效果 translate 画面转换位置移动动画效果 rotate 画面转移旋转动 ...
- PAT 1010
1010. Radix (25) Given a pair of positive integers, for example, 6 and 110, can this equation 6 = 11 ...
- 加密解密知识 php非对称加密
function test1(){ $config = array( "digest_alg" => "sha1", "private_key_ ...
- php验证码制作
目标: 使用php生成验证码 成品: 逻辑代码: authcode.php <?php header("Content-type:image/png"); session_s ...
- java基础常识
现在总结一些经常接触到的java名词 一:java技术分类 javase:java standard editor:java标准版,主要定义java经常使用的API(Application Progr ...
- js动态生成按钮,页面用DIV简单布局2
对前边不完善的修改 <!DOCTYPE html><html><head><title>test.html</title> <meta ...
- ADO和ADO.NET有什么不同?
1.一些ADO中常见的类型比如RecordSet在ADO.NET中已经没有了,而且在ADO.NET中也新增了许多在传统ADO中找不到的直接对应的新类型(如数据适配器): 2.传统的ADO主要针对紧密连 ...
- php 首页定时生成静态页面
往往首页的js,商务通代码加的太多,导致页面访问速度变慢,可以把首页有动态变为静态进行访问,访问速度会有所提升,不过如果更新首页数据,并不能及时更新,而是你规定的时间内固定更新一次 代码如下: < ...