zoukankan      html  css  js  c++  java
  • 自己写的一个校验IP、IP掩码、IP段的方法

    <input type="" name="" id="testip" onkeypress="getKey();" style=" 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|1dd|[1-9]d|d).(25[0-5]|2[0-4]d|1dd|[1-9]d|d).(25[0-5]|2[0-4]d|1dd|[1-9]d|d).(25[0-5]|2[0-4]d|1dd|[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;
            }    
        }
  • 相关阅读:
    Git合并开发代码分支到测试代码分支
    用webdriver+phantomjs实现无浏览器的自动化过程
    软件测试工作中涉及的Linux命令整理
    Windows系统端口占用情况检查脚本
    PowerShell调用jira rest api实现对个人提交bug数的统计
    地下城堡游戏小脚本儿——自动炼金
    Java中通过JDBC远程连接Oracle数据库
    PowerShell调用jira rest api实现jira统计自动化
    【Spring】12、Spring Security 四种使用方式
    【hibernate】1、Hibernate的一个注解 @Transient
  • 原文地址:https://www.cnblogs.com/wwx875075608/p/9138068.html
Copyright © 2011-2022 走看看