描述 编写一个函数来验证输入的字符串是否是有效的 IPv4 或 IPv6 地址

IPv4 地址由十进制数和点来表示,每个地址包含4个十进制数,其范围为 0 - 255, 用(“.”)分割。比如,172.16.254.1;
同时,IPv4 地址内的数不会以 0 开头。比如,地址 172.16.254.01 是不合法的。

IPv6 地址由8组16进制的数字来表示,每组表示 16 比特。这些组数字通过 (“:”)分割。比如,
2001:0db8:85a3:0000:0000:8a2e:0370:7334 是一个有效的地址。而且,我们可以加入一些以 0开头的数字,字母可以使用大写,也可以是小写。所以, 2001:db8:85a3:0:0:8A2E:0370:7334 也是一个有效的 IPv6 address地址 (即,忽略 0 开头,忽略大小写)。然而,我们不能因为某个组的值为 0,而使用一个空的组,以至于出现 ( : : ) 的情况。 比如,2001:0db8:85a3::8A2E:0370:7334 是无效的 IPv6 地址。 同时,在 IPv6 地址中,多余的 0也是不被允许的。比如,02001:0db8:85a3:0000:0000:8a2e:0370:7334 是无效的。

说明: 你可以认为给定的字符串里没有空格或者其他特殊字符。

采用分隔字符串,逐个合法性检测的方法处理IP地址字符串

swift:

func solveIPAdress ( _ IP: String) -> String {if IP.count <= 0 { return "Neither" }if check_IPv4_usingSplit(IP) {return  "IPv4"}else if check_IPv6_usingSplit(IP) {return  "IPv6"}else{return  "Neither"}
}func check_IPv4_usingSplit ( _ IP: String) -> Bool {let adress = IP.components(separatedBy: ".")if adress.count != 4 {return false    //ip地址不满足数量四}for i in 0..<adress.count {if adress[i].count <= 0 || adress[i].count > 3 {return false    //ip地址位数 不合法}let strAray = Array(adress[i])let firstNum = strAray[0]  //ip地址首位数字if firstNum == "0" && adress[i].count > 1 {return false     //存在前导0}for str in strAray {if ((Character(String(str)).asciiValue! >= Character("a").asciiValue!  &&Character(String(str)).asciiValue! <= Character("z").asciiValue!) ||(Character(String(str)).asciiValue! >= Character("A").asciiValue!  &&Character(String(str)).asciiValue! <= Character("Z").asciiValue!)) {return false    //ipv4地址中没有 a-z A-Z}}var num = 0for str in strAray {num = num * 10 + Int(Character(String(str)).asciiValue! - Character("0").asciiValue!)}if num < 0 || num > 255 {return false    //ip地址大小不合法}}return true
}func check_IPv6_usingSplit ( _ IP: String) -> Bool {let adress = IP.components(separatedBy: ":")if adress.count != 8 {return false    //ipv6位数不满足8位}for i in 0..<adress.count {if adress[i].count <= 0 || adress[i].count > 4 {return false   //ipv6地址位 1-4}let strArray = Array(adress[i])for str in strArray {if !((Character(String(str)).asciiValue! >= Character("a").asciiValue!  &&Character(String(str)).asciiValue! <= Character("f").asciiValue!) ||(Character(String(str)).asciiValue! >= Character("A").asciiValue!  &&Character(String(str)).asciiValue! <= Character("F").asciiValue!) ||(Character(String(str)).asciiValue! >= Character("0").asciiValue!  &&Character(String(str)).asciiValue! <= Character("9").asciiValue!)) {return false    //ipv4地址只有 0-9 a-z A-Z}}}return true
}

算法——验证IP地址合法性相关推荐

  1. 正则表达式验证IP地址合法性

    首先学习一下正则表达式的语法规则,如下: IP地址通常是类似:10.221.105.225的格式,不能以0开头,每个字段最大不超过255,不小于0 IP匹配规则: String ip = " ...

  2. ip地址合法性检查 php,php检查验证IP为有效IP地址函数

    在php5.2之前如果我们要验证IP地址是否有效我们需要使用正则来验证这样只是IP地址是不是合法的,如果要有效我们需要调用ping来操作,但php5.2.0之后,有专门的函数来做这个判断了,下面我来总 ...

  3. Python课堂:判定IP地址合法性的三种方法

    IP IP合法性校验是开发中非常常用的,看起来很简单的判断,作用确很大,写起来比较容易出错,今天我们来总结一下,看一下3种常用的IP地址合法性校验的方法. IPv4的ip地址格式:(1~255).(0 ...

  4. Python:判定IP地址合法性的三种方法

    IP IP合法性校验是开发中非常常用的,看起来很简单的判断,作用确很大,写起来比较容易出错,今天我们来总结一下,看一下3种常用的IP地址合法性校验的方法. IPv4的ip地址格式:(1255).(02 ...

  5. ip 地址 192.168.1.255 代表( )。_判定IP地址合法性的三种方法

    IP IP合法性校验是开发中非常常用的,看起来很简单的判断,作用的确很大,写起来比较容易出错,今天我们来总结一下,看一下3种常用的IP地址合法性校验的方法. IPv4的ip地址格式:(1~255).( ...

  6. python判断ip地址是否合法_Python课堂:判定IP地址合法性的三种方法

    IP IP合法性校验是开发中非常常用的,看起来很简单的判断,作用确很大,写起来比较容易出错,今天我们来总结一下,看一下3种常用的IP地址合法性校验的方法. IPv4的ip地址格式:(1~255).(0 ...

  7. python判断字符串合法,详解Python判定IP地址合法性的三种方法 python中判断一个字符串是否是IP地址...

    html 中 鼠标放在标签上会显示小手状,其它标签在其他标签上,美工给加了一些样式,鼠标放上去也显示小手状.有哪位大手状样式 有什么不懂的前端问题可以去菜鸟驿站.全都是泡沫,只一刹的花火,所谓的友情, ...

  8. Python | 判定IP地址合法性的四种方法

    你好,我是悦创. IP 合法性校验是开发中非常常用的,看起来很简单的判断,作用确很大,写起来比较容易出错,今天我们来总结一下,看一下3种常用的IP地址合法性校验的方法. 先了解 IPV4 的 IP 格 ...

  9. java邮箱验证正则表达式_LeetCode 力扣官方题解 | 468.验证 IP 地址

    点击上方蓝字设为星标 下面开始今天的学习-力扣 468. 验证 IP 地址(点击文末阅读原文查看题目)题目描述 编写一个函数来验证输入的字符串是否是有效的 IPv4 或 IPv6 地址. IPv4 地 ...

最新文章

  1. 生动的解释下什么是 MySQL 的“回表”?
  2. 「高并发秒杀」mysql只修改字段名称
  3. phpMyAdmin 4.4.0 beta1 发布,MySQL 管理工具
  4. 【Linux系统编程】线程同步与互斥:POSIX无名信号量
  5. [蓝桥杯2019初赛]特别数的和-枚举
  6. 【H.264/AVC视频编解码技术】第二章【H264码流分析】
  7. linux qt sql,linux qt联接sqlserver怎么配置服务器
  8. HTTP/2 in GO(二)
  9. Codeforces Round #417 (Div. 2) B. Sagheer, the Hausmeister
  10. 信息学奥赛GoC编程测试题题库
  11. C语言函数 思维导图
  12. Excel 计算标准差
  13. pat甲级刷题计划-字符串
  14. Oracle AutoVue介绍
  15. NRF2401使用详细说明
  16. Android开发之使用贝塞尔曲线实现黏性水珠下拉效果
  17. AFX_PMSG数据结构
  18. 看腻了杨幂,热巴,快来抓取上千张美女图片,古装美女看个够
  19. 重识JavaScript(一)
  20. OA系统以项目管理为中心,为会计事务所打造内外协同一体化平台

热门文章

  1. 设置两个无线路由器同时无线上网的方法
  2. java格式化货币_java-格式化没有货币符号的货币
  3. 单例设计模式在Spring中的应用
  4. 在Ubuntu系统下编写简单程序
  5. 《把时间当作朋友:运用心智获得解放》读后
  6. 【疯狂世界杯】css 动画实现跳动的足球
  7. STFW3N150管脚功能 数据表(PDF)引脚图
  8. 如何保护膝盖,预防跑步膝或膝盖伤病
  9. react中的map遍历
  10. 轻松添加发光效果和耀斑的ps插件:Oniric Glow Generator汉化版