<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; } }