<input type="" name="" id="testip" onkeypress="getKey();" style="width: 150px;height: 30px;"> <ul id="iplist"></ul> <span id="ipnum">以输入的IP总数为0</span>
自己写的一个校验IP、IP掩码、IP段的方法
JS
var ipNum=0; function getKey(){ if(event.keyCode==13){ var ip= $('#testip').val(); if(testIp(ip,1)){ $('#testip').val("") } } if(ipNum>4278124287){ alert("超出IP总数"); $('#testip').val(ip) return; } $('#ipnum').text(`以输入的IP总数为${ipNum}`) $('#iplist').val(ipNum) } $('#iplist').on('click','.ipdelete',function(e){ ipNum=$('#iplist').val()-e.target.parentNode.value; e.target.parentNode.remove(); $('#ipnum').text(`以输入的IP总数为${ipNum}`) $('#iplist').val(ipNum) e.preventDefault(); }) //type 为1的话会生成list 只想使用IP校验功能直接传IP function testIp(ip,type){ var ip_patrn =/^(25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)$/; var ip_mask = /^((([01]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))[.]){3}(([0-1]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))\/(([0-9])|([1-2][0-9])|([3][0-2]))$/; if(!type){ type==0; } if(ip!=""){ if(ip.indexOf("-")!=-1){ var ipOrigan=ip; ip=ip.split("-"); if(ip_patrn.test(ip[0])&&ip_patrn.test(ip[1])){ //先验证是否是IP 在验证是否是正确的IP段 再计算IP数量 var start = ip[0].split('.'); var end = ip[1].split('.'); var start_ip=start[0] * 256 * 256 * 256 + start[1] * 256 * 256 + start[2] * 256 + start[3]*1; var end_ip=end[0] * 256 * 256 * 256 + end[1] * 256 * 256 + end[2] * 256 + end[3]*1; if((end_ip - start_ip)>0){ ipNum=end_ip - start_ip+1+ipNum; if(type==1&&ipNum<=4278124287){ $("#iplist").append(`<li value=${end_ip - start_ip+1}>${ipOrigan}<button class="ipdelete">删除</button></li>`)} return true; }else{ alert('前后IP大小输入有误'); return false; } }else{ alert('请检查IP段格式'); return false; } }else if(ip.indexOf("/")!=-1){ //验证是否是正确的IP掩码 在计算数量 if(ip_mask.test(ip)){ var p=32-ip.slice(ip.indexOf("/")+1) var pnum=1; while(p){ pnum=2*pnum; p--; } ipNum=ipNum+pnum; if(type==1&&ipNum<=4278124287){ $("#iplist").append(`<li value=${pnum}>${ip}<button class="ipdelete">删除</button></li>`)} return true; }else{ alert('请检查IP掩码格式') return false; } }else{ if(!ip_patrn.test(ip)){ //验证是否是IP alert("请检查IP格式"); return false; } ipNum++ if(type==1&&ipNum<=4278124287){ $("#iplist").append(`<li value=1>${ip}<button class="ipdelete">删除</button></li>`)} return true; } }else{ alert("请输入"); return false; } }