自己寫的一個校驗IP、IP掩碼、IP段的方法


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM