`
jie_bosshr
  • 浏览: 143575 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

js验证ip地址和子网掩码等

ip 
阅读更多
/**
* 函数名:   validateIP
* 函数功能: 验证IP的合法性
* 传入参数: what:点分十进制的IP(如:192.168.1.2) 
* 返回值:   true:what为合法IP false: what为非法IP
**/
function validateIP(what) 
{
	if(what.search(/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/) == -1)
		return false;
    	var fs = 0,ls = 0;
	var myArray = what.split(/\./);
	var i;
	for( i = 0; i < 4; i ++ ) 
	{
		if( !isNumeric(myArray[i]) )
			return false;

		var t=atoi(myArray[i]); /* 每个域值范围0-255 */
		if( (t<0) || (t>255) )
			return false;
	}	
	fs= atoi(myArray[0]);	//取第一位进行校验
	ls = atoi(myArray[3]);  //取最后一位进行校验
	
	/* 主机部分不能全是1和0(第一位不能为255和0),网络部分不能全是0(最后一位不能为0) */
	if((fs == 255) || (fs ==0) || (ls == 0))
	{
		return false;
	}
	return true;
}


/**
* 函数名:   validateMask
* 函数功能: 验证子网掩码的合法性
* 传入参数: MaskStr:点分十进制的子网掩码(如:255.255.255.192) 
* 调用函数: _checkIput_fomartIP(ip) 
* 返回值:   true:MaskStr为合法子网掩码 false: MaskStr为非法子网掩码
**/
function validateMask(MaskStr)
{
    /* 有效性校验 */
    var IPPattern = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/
    if(!IPPattern.test(MaskStr))return false;

    /* 检查域值 */
    var IPArray = MaskStr.split(".");
    var ip1 = parseInt(IPArray[0]);
    var ip2 = parseInt(IPArray[1]);
    var ip3 = parseInt(IPArray[2]);
    var ip4 = parseInt(IPArray[3]);
    /* 每个域值范围0-255 */
    if ( ip1<0 || ip1>255 
       || ip2<0 || ip2>255
       || ip3<0 || ip3>255
       || ip4<0 || ip4>255 )
    {
       return false;
    }

    /* 检查二进制值是否合法 */
    //拼接二进制字符串
    var ip_binary = _checkIput_fomartIP(ip1) + _checkIput_fomartIP(ip2) + _checkIput_fomartIP(ip3) + _checkIput_fomartIP(ip4);

    if(-1 != ip_binary.indexOf("01"))
    {
        return false;
    }
    return true;
}

/**
* 函数名:   _checkIput_fomartIP
* 函数功能: 返回传入参数对应的8位二进制值
* 传入参数: ip:点分十进制的值(0~255),int类型的值,
* 主调函数: validateMask
* 返回值:    ip对应的二进制值(如:传入255,返回11111111;传入1,返回00000001)
**/
function _checkIput_fomartIP(ip)
{
    return (ip+256).toString(2).substring(1); //格式化输出(补零)
}

/**
* 函数名:    convertIP
* 函数功能: 传入参数string nnn.nnn.nnn.nnn 转化为long format IP
* 返回值:    转化后的IP
**/
function convertIP( what )
{
	if( !checkIP( what ) )
		return 0;

	var myArray = what.split(/\./);	
	var ip = (256*256*256)*(myArray[0]) + (256*256)*(myArray[1]) + 256*(myArray[2]) + 1*myArray[3];
	return ip;
}

/**
* 函数名:   checkIP
* 函数功能: 验证IP的合法性
* 传入参数: what:点分十进制的IP(如:192.168.1.2) 
* 返回值:   true:what为合法IP false: what为非法IP
**/
function checkIP(what) 
{
	if(what.search(/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/) == -1)
		return false;
        var fs = 0,ls = 0;
	var myArray = what.split(/\./);
	var i;
	for( i = 0; i < 4; i ++ ) 
	{
		if( !isNumeric(myArray[i]) )
			return false;

		var t=atoi(myArray[i]); /* 每个域值范围0-255 */
		if( (t<0) || (t>255) )
			return false;
	}
	return true;
}

/**
* 函数名:   splitString
* 函数功能: 分割字符串存入数值中
* 传入参数: str要分割的字符串,splitor分割标示符 
* 返回值:   Array
**/
function splitString( str, splitor )
{
	var a = new Array();
	var n = 0, c;
	
	a[n]="";
	for( var i=0; i < str.length; i ++ )
	{
		c = str.charAt(i);
		if( c != splitor )
		{
			a[n] +=c;
		}
		else
		{
			n ++;
			a[n]="";
		}
	}
	return a;
}

/**
* 函数名:   isNumeric
* 函数功能: 检测是否是数字
* 传入参数: 传入strval参数 
* 返回值:   true:strval为数字 false:strval为非数字
**/
function isNumeric(strval) {
	var  c;
	for (var i=0; i<strval.length;i++) {
		c =strval.charAt(i);
		if (c < "0" || c > "9") {
			return false;
		}
	}
	return true;
}


//检测是否大于0
function isMoreThanOne(strval) {
	var  c;
	for (var i=0; i<strval.length;i++) {
		c =strval.charAt(i);
		if (c < "1" || c > "9") {
			return false;
		}
	}
	return true;
}

function cvrtStr(src) {
	var c, i, s = "";
	for( i = 0; i < src.length; i ++ ) {
		c = src.charAt(i);
		if( (c < 'a' || c > 'z') && (c < 'A' || c > 'Z') && (c < '0' || c > '9') )
			c = '_';
		s += c;
	}
	return s;
}

function trim(s)
{
    if (s == null)
    {
        return s;
    }

    var i;
    var beginIndex = 0;
    var endIndex = s.length - 1;

    for (i=0; i<s.length; i++)
    {
        if (s.charAt(i) == ' ' || s.charAt(i) == ' ')
        {
            beginIndex++;
        }
        else
        {
            break;
        }
    }

    for (i = s.length - 1; i >= 0; i--)
    {
        if (s.charAt(i) == ' ' || s.charAt(i) == ' ')
        {
            endIndex--;
        }
        else
        {
            break;
        }
    }

    if (endIndex < beginIndex)
    {
        return "";
    }

    return s.substring(beginIndex, endIndex + 1);
}

//查询是否为数字类型
function isDigit(cCheck) 
{ 
     return (('0'<=cCheck) && (cCheck<='9')); 
}

function checkNumber(s)
{
     if(s==null)return false; 
     s=trim(s);
     for (var i=0; i < s.length; i++)
           {
                   var c = s.charAt(i);
                if (!(isDigit(c)))
                {
                    return false;
                }
            }
      return true;
}
分享到:
评论
1 楼 pcxbest 2015-04-16  
atoi这个方法怎么没有定义?

相关推荐

    JS验证IP,子网掩码,网关和MAC的方法

    在互联网技术中,网络配置参数的...通过本篇文章的内容,您应该已经了解了如何使用JavaScript和正则表达式来验证IP地址、子网掩码、网关和MAC地址的正确性。这种方式在前端界面验证和网络配置工具中非常常见和有用。

    js针对ip地址、子网掩码、网关的逻辑性判断

    这可以用来验证IP地址、子网掩码和网关地址之间的逻辑一致性。 JavaScript中校验IP地址和子网掩码合法性的方法通常使用正则表达式来实现。对于IP地址,可以使用正则表达式来匹配每一段数字的合法性,确保其为0到255...

    js验证IP及子网掩码的合法性有效性示例

    首先,让我们来解析一下验证IP地址有效性的JavaScript函数。有效的IPv4地址由四个十进制数构成,每个数在0到255之间,四个数之间通过点(.)分隔。在标题“js验证IP及子网掩码的合法性有效性示例”中提及的函数...

    IP切换脚本_自动切换IP地址、掩码、网关、DNS

    这里,“接口名”是指你要修改的网络接口名称,如“本地连接”或“无线网络连接”,而“新IP 地址”、“子网 掩码”和“默认网关”则分别代表新的IP地址、子网掩码和默认网关的值。 对于DNS服务器的设置,可以使用...

    非常强悍的JS 实现IP地址分配 源码

    文件1.txt可能包含了源代码示例,演示了如何使用JavaScript实现IP地址的分配、验证、转换等功能。通过阅读和理解这个文件,开发者可以学习到具体的编程技巧和实践应用。 总结,"非常强悍的JS实现IP地址分配"涉及到...

    javascript实现验证IP地址等相关信息代码

    总结来说,本文通过JavaScript代码展示了如何实现对IP地址、子网掩码和网关地址的合法性验证。利用正则表达式对IP地址格式的匹配、对IP地址和子网掩码执行按位与操作以获取网络地址,以及验证网关地址是否位于同一...

    校验IP地址

    综上所述,"校验IP地址"不仅包括验证IP地址的格式,还涉及IP地址的结构、分类、转换、子网掩码、解析、管理等多个方面。在实际编程或网络管理工作中,正确地处理和校验IP地址是不可或缺的技能。

    测试IP地址

    2. IP验证:验证IP地址的有效性,确保它符合IPv4或IPv6的格式规范,这可以通过正则表达式匹配实现。 3. 地理位置定位:通过IP地址反查地理位置信息,这通常需要调用第三方API,如IP-API、GeoIP等服务。 4. 网络...

    IP网段判断-1.0.0.16384.zip

    AutoJS在这方面的应用可能包括编写脚本来检测或验证输入的IP地址是否属于特定的网段,或者用于自动化网络配置、监控网络流量等。它可以通过JavaScript库,如Node.js的`net`模块,实现这些功能。例如,你可以创建一个...

    JavaScript猎取IP猎取的是IPV6 如何校验_.docx

    在IPV6中,前缀是指地址的最前面连续的一组1,后面跟着的全部是0,这个前缀的作用类似于IPV4的子网掩码,用于定义网络地址和主机地址的边界。例如,1205::fff0:ffd1:1021/120中的“/120”就是前缀长度,表示前120位...

    前端开源库-ip-range-check

    CIDR(无类别域间路由)表示法是一种用于IP地址和子网掩码组合的紧凑格式,形如`IP/前缀长度`。例如,`192.0.2.0/24` 表示一个包含256个地址的IPv4网络,其中前24位是网络部分,剩下的8位是主机部分。这种表示方式...

    商业编程-源码-动态发现某个路由的所有子网的拓扑结构.zip

    每个子网都有自己的网络地址和子网掩码,用于确定哪些IP地址属于该子网。 6. **源代码分析**:压缩包中的源代码可能是用Python、Java、C++或其他编程语言编写的,用于实现动态发现路由及子网拓扑的算法。这些代码...

    WebGnuru Simple Subnet Calculator-开源

    1. **网络地址**:这是 IP 地址和子网掩码逻辑与操作的结果,标识了网络部分,通常用于路由器配置。 2. **广播地址**:每个子网中的最后一个有效 IP 地址,用于网络中所有设备发送广播信号。 3. **可用 IP 地址范围*...

    地址选择

    理解IP地址的分类(IPv4和IPv6)、子网掩码、广播地址和网络地址是网络基础。同时,DNS将人类可读的域名转换为IP地址,确保正确通信。路由选择则决定了数据包在网络中的传输路径。 3. 前端交互:在用户界面中,地址...

    ASP源码—个人IP网整站源码PC+WAP v2.3.zip

    - js/:JavaScript文件,用于增强前端交互和验证。 - data/:可能存储数据库连接信息,或者临时或缓存数据。 此源码的v2.3更新可能涉及优化性能、增加新功能、修复安全漏洞或改善用户体验。对于开发者来说,研究这...

    B114NET-IP查询系统.rar

    5. **IP段信息**:对于IP段查询,系统可能包含CIDR(无类别域间路由)块的解析,以及子网掩码等相关网络划分信息。 6. **反向DNS查询**:高级的IP查询系统还会提供反向DNS查询功能,即通过IP找到与其对应的域名,这...

    使用IPv6子网划分-第2/2部分

    IPv6子网划分是将一个大的IPv6地址空间划分为更小的、独立的子网,以便有效地管理和分配IP地址。这有助于优化网络资源的使用,提高网络安全性和简化路由配置。 首先,IPv6子网计算器是一种实用工具,它能够帮助网络...

Global site tag (gtag.js) - Google Analytics