JavaScript学习 CodeWars 打怪升级日记 判断输入字符串是否符合IPv4地址标准
2016-07-01 09:41
459 查看
CodeWars 是一个在线编程网站,其奖励机制像打怪升级。你不能查看高于你级别的问题的答案。除非自己通过提交测试。通过提交之后可以看到各种解法排行榜 。通过对比自己解法和排行榜对比,可以找到差距,提高能力。
题目描述 : In
this kata you have to write a method to verify the validity of IPv4 addresses. 也就是编写一个函数判断IPv4地址是否有效。
例子 :
Example of valid inputs: (有效的输入)
"1.1.1.1"
"127.0.0.1"
"255.255.255.255"
Example of invalid input: (无效的输入)
"1444.23.9"
"153.500.234.444"
"-12.344.43.11"
分析 :IPv4地址标准形式一共32为,四组,每组数字在0~255之间。除第一位数字,后面前导不能为0,比如“153.010.234.125”
010就不符合标准;其次中间不能有字符,“123.a1.2.3”这样也是无效的;空格也是不可以的。 还有一种比较特殊的输入“....”即空的数字。所以判断需要判断这几种情况
①字符串不是四组;②每组数字不在0~255之间;③数字有前导0④有特殊字符⑤有空格。
看代码:
或者 parseInt()将字符转为数字的时候,具体装换规则和注意事项看这里 ,当转换结果为NaN时,不能用
"Number()
== NaN "判断,因为NaN 不等于NaN
,想要判断是否为NaN 用isNaN()函数。
看一下简单的
:
负责判断,秘诀就在于 Number函数对字符串的转换规则 看这里吧 。
}
题目描述 : In
this kata you have to write a method to verify the validity of IPv4 addresses. 也就是编写一个函数判断IPv4地址是否有效。
例子 :
Example of valid inputs: (有效的输入)
"1.1.1.1"
"127.0.0.1"
"255.255.255.255"
Example of invalid input: (无效的输入)
"1444.23.9"
"153.500.234.444"
"-12.344.43.11"
分析 :IPv4地址标准形式一共32为,四组,每组数字在0~255之间。除第一位数字,后面前导不能为0,比如“153.010.234.125”
010就不符合标准;其次中间不能有字符,“123.a1.2.3”这样也是无效的;空格也是不可以的。 还有一种比较特殊的输入“....”即空的数字。所以判断需要判断这几种情况
①字符串不是四组;②每组数字不在0~255之间;③数字有前导0④有特殊字符⑤有空格。
看代码:
function isValidIP(str) { var ipArr = str.split('.'); var length = ipArr.length; if (length != 4) { return false ;} //输入不是四组 for(var i =0 ; i < length ; ++ i) { if ( typeof parseInt(ipArr[i]) == "number" && isNaN(parseInt(ipArr[i])) != true) { //转为number类型并且 判断是否有特殊字符 if (ipArr[i][0] == 0 && ipArr[i].length > 1) { return false ;} //有前导0的情况,注意不要转为Number再判断 if ( parseInt(ipArr[i] ) <0 || parseInt(ipArr[i]) > 255) { return false ;} //是否在0-255之间 if (ipArr[i].trim() != ipArr[i]) { return false ;} //是否含有空格 } else { return false ; } } return true ; }这里一点需要注意:利用Number
或者 parseInt()将字符转为数字的时候,具体装换规则和注意事项看这里 ,当转换结果为NaN时,不能用
"Number()
== NaN "判断,因为NaN 不等于NaN
,想要判断是否为NaN 用isNaN()函数。
看一下简单的
:
function isValidIP2(str) { return str.split('.').filter(function(v){return v==Number(v).toString() && Number(v)<256 && Number(v) >= 0}).length==4; }所有的特殊情况由 v==Number(v).toString()
负责判断,秘诀就在于 Number函数对字符串的转换规则 看这里吧 。
}
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- 最后一次说说闭包
- Ajax
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法
- Redux系列02:一个炒鸡简单的react+redux例子
- JavaScript 各种遍历方式详解
- call/apply/bind 的理解与实例分享