猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
js怎么校验以逗号分隔的多ip地址
在文本域中输入多个ip地址并已逗号分隔,怎么用js的正则表达式校验呢
隔江千里
浏览 1478
回答 1
1回答
烙印99
- 忘了 IP 段可以为 0,所以修改了下,现在范围是 0.0.0.0 ~ 255.255.255.255先来验证一个 IP,每个 IP 分为 4 个段,每个段的规则如下一位数,/[1-9]/二位数,/[1-9]\d/三位数,首位是 1,/1\d{2}/ 或者 /1\d\d/三位数,首位是 2,第二位不是 5,/2[0-4]\d/三位数,首位是 2,第二们是 5,/25[0-5]/然后把这些规则用 | 组合起来,就是 IP 中的一段的验证规则/[1-9]|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5]/四段组合成的 IP 是由一个上述的一段加三个带点号验证的一段,所以是示意:/one(?:\.one){3}/,写出来就是/(?:[0-9]|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])(?:\.([0-9]|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])){3}/逗号分隔的多个IP,那就是,每个前面是逗号(,)或起始标记(^),一共无数个……所以/^(?:(?:^|,)(?:[0-9]|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])(?:\.(?:[0-9]|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])){3})+$/补充说实在的,写正则确实痛苦,可以写个函数来解决,可能更容易懂也更不容易出错function testIpList(ips) { // 把 ips 按逗号拆成 IP 数组,分别进行验证 // every 表示每个 ip 验证通过才算通过 return ips.split(",") .every(ip => { // 把每个 IP 拆成几段 const segments = ip.split("."); // 如果是精确的 4 段而且每段转换成数字都在 1~255 就对了 return segments.length === 4 && segments .map(segment => parseInt(segment, 10) || 0) .every(n => n >= 0 && n <= 255); });}
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
JavaScript
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续