自己写的一个校验IP、IP掩码、IP段的方法封装到了JQ中,方便了使用者的使用

使用者只需要在js中调用方法并传入一个ID即可生成验证工具      $("#IP").ipInput().Init();

<div id="IP"></div>
(function() {
    var ipInputer = function (ele) {
        this.$element = ele;
    }
    ipInputer.prototype = {
        Init: function() {
            var tample =
            ‘<div class="modal-border">‘+
            ‘<div class="tip tipstxt"><div class="inner"></div><div style="margin:4px;">&nbspIP格式:1.1.1.1</br>&nbspIP段格式:1.1.1.1-2.2.2.2</br>&nbspIP掩码格式:1.1.1.1/32</div></div>‘+
                ‘<div class="modal-body-item col-md-12">‘+
                    ‘<div class="col-md-12 input-group">‘+
                        ‘<input type="text" class="ip-input form-control"  placeholder="请输入合法IP">‘+
                        ‘<i class="fa fa-info tips" style="color:blue"></i>‘+
                        ‘<span class="input-group-btn">‘+
                            ‘<button class="btn btn-default ip-input-add-button btn_right">添加</button>‘+
                        ‘</span>‘+
                    ‘</div>‘+
                    ‘<div class="ip-list" class="col-md-12 input-group">‘+

                    ‘</div>‘+
                ‘</div>‘+
                ‘<div class="modal-body-item col-md-12">‘+
                    ‘<div class="col-md-12">‘+
                        ‘已输入的IP总个数为<span class="ip-number">0</span>‘+
                    ‘</div>‘+
                ‘</div>‘+
            ‘</div>‘;
            var ipNum=0;
            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]))$/;
            this.$element.html(tample);
            function CreatDom(e){
                var ip = e.data.$element.find(".ip-input").val();
                var oldipNum=e.data.$element.attr("ipunm");
                if(oldipNum==undefined){
                    oldipNum=0;
                }
                oldipNum=oldipNum*1;
                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+oldipNum;
                                if(ipNum<=4278124287){
                                    e.data.$element.find(".ip-list").append(`
                                        <div class="input-group">
                                            <input type="text" class="form-control" placeholder="" value="${ipOrigan}" class="addIpShow" ipunm=${end_ip - start_ip+1} disabled>
                                            <span class="input-group-btn">
                                            <button class="btn btn-default ipdelete btn_right">删除</button>
                                        </span></div>`);
                                    e.data.$element.attr("ipunm",ipNum)
                                    e.data.$element.find(‘.ip-number‘).text(ipNum)
                                    e.data.$element.find(".ip-input").val("")
                                }else{
                                    alert(‘超过最大ip数量‘)
                                    return false;
                                }
                            }else{
                                e.data.$element.find(".ip-input").val(ipOrigan);
                                alert(‘前后IP大小输入有误‘);
                                return false;
                            }
                        }else{
                            e.data.$element.find(".ip-input").val(ip);
                            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=oldipNum+pnum;
                            if(ipNum<=4278124287){
                                e.data.$element.find(".ip-list").append(`
                                    <div class="input-group">
                                                <input type="text" name=""  class="form-control" placeholder="" value="${ip}" class="addIpShow" ipunm=${pnum} disabled>
                                        <span class="input-group-btn">
                                            <button class="btn btn-default ipdelete btn_right">删除</button></div>`)
                                e.data.$element.attr("ipunm",ipNum)
                                e.data.$element.find(‘.ip-number‘).text(ipNum)
                                e.data.$element.find(‘.ip-input‘).val("")
                            }else{
                                alert(‘超过最大ip数量‘)
                                return false;
                            }
                        }else{
                            e.data.$element.find(‘.ip-input‘).val(ip)
                            alert(‘请检查IP掩码格式‘)
                            return false;
                        }
                    }else{
                        if(!ip_patrn.test(ip)){  //验证是否是IP
                            alert("请检查IP格式");
                            return false;
                        }
                        ipNum=oldipNum+1
                        if(ipNum<=4278124287){
                            e.data.$element.find(".ip-list").append(`
                                <div class="input-group">
                                                <input type="text" name=""   class="form-control" placeholder="" value="${ip}" class="addIpShow" ipunm=1 disabled>
                                        <span class="input-group-btn">
                                            <button class="btn btn-default ipdelete btn_right">删除</button></div>`)
                            e.data.$element.attr("ipunm",ipNum)
                            e.data.$element.find(‘.ip-number‘).text(ipNum)
                            e.data.$element.find(‘.ip-input‘).val("")
                        }else{
                            alert(‘超过最大ip数量‘)
                            return false;
                        }
                    }
                }else{
                    alert("请输入");
                    return false;
                }
            }
            this.$element.off();
            this.$element.on("click",".ip-input-add-button",this,function(e){
                e.stopPropagation()
                CreatDom(e)
            });
            this.$element.on("mouseover",".tips",this,function(e){
                  e.data.$element.find(‘.tipstxt‘).css("display","block")
            });
            this.$element.on("mouseleave",".tips",this,function(e){
                  e.data.$element.find(‘.tipstxt‘).css("display","none")
            });
            this.$element.on("click",".ipdelete",this,function(e){
                ipNum=e.data.$element.attr("ipunm")-$(this).parent().parent().children(":nth-child(1)").attr("ipunm");
                $(this).parent().parent().remove();
                e.data.$element.find(‘.ip-number‘).text(ipNum)
                e.data.$element.attr("ipunm",ipNum)
            })
            this.$element.on("keydown",".ip-input",this,function(e){
                e.stopPropagation()
                if(e.which==13){
                    CreatDom(e)
                }
            })
        },
        Remove:function(){
            this.$element.off();
            this.$element.empty();
            this.$element.attr("ipunm",0)
        },
    }
    $.fn.ipInput = function() {
        //创建Beautifier的实体
        var ipInput = new ipInputer(this);
        //调用其方法
        return ipInput;
        // return ipInput.Init();
    }
})(); 

原文地址:https://www.cnblogs.com/wwx875075608/p/9174496.html

时间: 2024-08-03 03:46:39

自己写的一个校验IP、IP掩码、IP段的方法封装到了JQ中,方便了使用者的使用的相关文章

虚拟IP---Linux下一个网卡配置多个IP

转:http://blog.csdn.net/turkeyzhou/article/details/16971225 Linux下配置网卡ip别名何谓ip别名?用windows的话说,就是为一个网卡配置多个ip.什么场合增加ip别名能派上用场?布网需要.多ip访问测试.特定软件对多ip的需要...and so on. 下面通过几个例子简单介绍一下如何使用ifconfig命令给网卡配置ip别名.一.首先为服务器网卡配置静态ip地址#ifconfig eth0 192.168.6.99 netmas

Python获取本机所有网卡ip,掩码和广播地址

搜了一天,竟然没找到一段合适的代码来获取机器中所有网卡的ip,掩码和广播地址,大部分都是用socket,但是socket通常返回的要不就是内网地址,要不就是公网地址,不能够找到所有地址,真的太忧桑了,决定自己通过ifconfig或ipconfig的返回信息,一步步地过滤了.这次的代码主要用到了正则表达式和subprocess模块,而且为了兼容所有平台(win,linux和mac),也用到了platform来判断系统类型,不说太多,代码如下: import subprocess import re

在CentOS 7上给一个网卡分配多个IP地址

有时你也许想要给一个网卡多个地址.你该怎么做呢?另外买一个网卡来分配地址?在小型网络中其实不用这么做.我们现在可以在CentOS/RHEL 7中给一个网卡分配多个ip地址.想知道怎么做么?好的,跟随我,这并不难. 首先,让我们找到网卡的IP地址.在我的CentOS 7服务器中,我只使用了一个网卡. 用root特权运行下面的命令: ip addr 示例输出: 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN l

统计一个C类网段可用IP

[需求描述] 统计10.240.210.171-180/24段的可用IP [思路方法] 利用ping命令,如果结果返回为真(即[ $? -eq "0" ]),证明该IP对应的主机或终端是存活的,之后将对应IP追加到host_alive_lan.txt文件中,否则则将其追加到host_dead_lan.txt文件中,host_dead_lan.txt文件中的IP即为可用IP,用于分配给新机器. [code] #!/bin/bash . /etc/init.d/functions >

linux下一个网卡配置多个ip【虚拟ip】

Linux下配置网卡ip别名何谓ip别名? 用windows的话说,就是为一个网卡配置多个ip. 什么场合增加ip别名能派上用场? 布网需要.多ip访问测试.特定软件对多ip的需要...and so on. 下面通过几个例子简单介绍一下如何使用ifconfig命令给网卡配置ip别名. 一.首先为服务器网卡配置静态ip地址 #ifconfig eth0 192.168.6.99 netmask 255.255.255.0 up eth0                     //机器的第一个网卡

linux下一个网卡绑定多个ip

[[email protected] ~]# cd /etc/sysconfig/network-scripts/ [[email protected] network-scripts]# cp ifcfg-eth0 ifcfg-eth0:1 [[email protected] network-scripts]# vim ifcfg-eth0:1 DEVICE=eth0:1HWADDR=00:0C:29:73:E6:0DTYPE=EthernetUUID=98b5dc88-94c0-4a78-

Linux中一个网卡含有多个IP,将从IP升级为主IP的方法

今天在查看虚拟机的时候,发现某一网卡含有多个IP地址: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:6b:a5:a2 brd ff:ff:ff:ff:ff:ff inet 192.168.213.132/24 brd 192.168.213.255 scope global dynamic eno16777736 v

[转帖]在CentOS 7上给一个网卡分配多个IP地址

在CentOS 7上给一个网卡分配多个IP地址 https://linux.cn/article-5127-1.html 作者: SK 译者: LCTT geekpi | 2015-03-26 13:58   评论: 19 收藏: 9 分享: 21 有时你也许想要给一个网卡多个地址.你该怎么做呢?另外买一个网卡来分配地址?在小型网络中其实不用这么做.我们现在可以在CentOS/RHEL 7中给一个网卡分配多个ip地址.想知道怎么做么?好的,跟随我,这并不难. 首先,让我们找到网卡的IP地址.在我

由IP和掩码计算广播地址

public static IPAddress GetBroadcast(IPAddress ipAddress, IPAddress subnetMask) { var ip = ipAddress.GetAddressBytes(); var sub = subnetMask.GetAddressBytes(); // 广播地址=子网按位求反 再 或IP地址 for (var i = 0; i < ip.Length; i++) { ip[i] = (byte) ((~sub[i]) | i