JS中IP地址的相关验证

/* ***************** */
/* 判断IP地址是否合法 */
var judgeIpIsLegal = function(ipAddr){
	var regIps = /^(((25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|[0-9])\.){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|[0-9]))$/;
	return regIps.test(ipAddr);
}
/* IP地址转换为二进制字符串 */
/* 例如:172.16.4.235 --> 10101100000100000000010011101011 */
var praseIpToBinary = function(ipAddress){
	var numArray = ipAddress.split(".");
	if(numArray.length != 4){
		alert("输入的IP有误");
		return;
	}
	var returnIpStr = "";
	for (var i = 0; i < 4; i++) {
		var curr_num = numArray[i];
		var number_Bin = parseInt(curr_num);
		number_Bin = number_Bin.toString(2);
		var iCount = 8-number_Bin.length;
		for (var j = 0; j < iCount; j++) {
			number_Bin = "0"+number_Bin;
		}
		returnIpStr += number_Bin;
	}
	return returnIpStr;
}
/* 判断子网掩码是否合法 */
/* 子网掩码必须是 1 和 0组成的连续的一段 如 11110000 */
var judgeSubnetMask = function(ipAddress){
	var binaryIpString = praseIpToBinary(ipAddress).toString();
	var subIndex = binaryIpString.lastIndexOf("1")+1;
	var frontHalf = binaryIpString.substring(0,subIndex);
	var backHalf = binaryIpString.substring(subIndex);
	if(frontHalf.indexOf("0") != -1 || backHalf.indexOf("1") != -1){
		return false;
	}else{
		return true;
	}
}
/* 两个IP地址做 与 操作 返回结果 */
/* 该功能主要用来实现 IP地址和子网掩码 相与,获取当前IP地址的IP地址段 */
/* 以此来验证输入的网关地址是否合法 */
var getIPsAndResult = function(ipAddr1,ipAddr2){
	var ipArray1 = ipAddr1.split(".");
	var ipArray2 = ipAddr2.split(".");
	var returnResult = "";
	if(ipArray1.length != 4 || ipArray2.length != 4 ){
		alert("输入的IP有误");
		return;
	}
	for (var i = 0; i < 4; i++) {
		var number1 = parseInt(ipArray1[i]);
		var number2 = parseInt(ipArray2[i]);
		returnResult += number1&number2;
		if(i<3){
			returnResult += ".";
		}
	}
	return returnResult;
}
/* 判断网关地址是否合法 */
var judgeGatewayResult = function(ipAddr,subnetMask,gateway){
	var andResult1 = getIPsAndResult(ipAddr,subnetMask);
	var andResult2 = getIPsAndResult(gateway,subnetMask);
	if(andResult1 == andResult2){
		return true;
	}else{
		return false;
	}
}
时间: 2024-11-10 04:55:24

JS中IP地址的相关验证的相关文章

js中ip地址与整数的相互转换

转载地址 //IP转成整型function _ip2int(ip) {    var num = 0;    ip = ip.split(".");    num = Number(ip[0]) * 256 * 256 * 256 + Number(ip[1]) * 256 * 256 + Number(ip[2]) * 256 + Number(ip[3]);    num = num >>> 0;    return num;} //整型解析为IP地址functi

js获取IP地址多种方法实例教程

js获取IP地址方法总结 js代码获取IP地址的方法,如何在js中取得客户端的IP地址.原文地址:js获取IP地址的三种方法 http://www.jbxue.com/article/11338.html 1,js取得IP地址的方法一 <script src="http://pv.sohu.com/cityjson?ie=utf-8"></script><script type="text/<A class="infotextke

js获取IP地址的方法小结

s代码获取IP地址的三种方法,在js中取得客户端的IP地址. 原文地址:http://www.jbxue.com/article/11338.html 1,js取得IP地址的方法一 <script src="http://pv.sohu.com/cityjson?ie=utf-8"></script> <script type="text/<A class="infotextkey" href="http://

js获取IP地址方法总结

js代码获取IP地址的方法,如何在js中取得客户端的IP地址.原文地址:js获取IP地址的三种方法 http://www.jbxue.com/article/11338.html 1,js取得IP地址的方法一 <script src="http://pv.sohu.com/cityjson?ie=utf-8"></script><script type="text/<A class="infotextkey" href=

使用CDN之后APACHE日志记录中IP地址不正确的解决方案

这篇文章主要介绍了使用CDN之后APACHE日志记录中IP地址不正确的解决方案,需要的朋友可以参考下最近在搞APACHE日志分析,装好了awstats之后,这两天进行了观察, 报表日期 月 1 月 2010首次参观日期 2010年01月12日 11:04最近参观日期 2010年01月13日 23:59参观者 参观人次 网页数 文件数 字节浏览器流量 * 77 226 (2.93 参观人次/参观者) 508979 (2252.11 网页数/参观) 509492 (2254.38 文件数/参观) 1

VPN组网中IP地址冲突解决方案

很多路由器的默认IP地址是192.168.1.1,用户买回来之后经常也没有去修改这个IP地址,估计国内有80%局域网目前都在使用192.168.1.0/24网段.如果不涉及与其他地方VPN组网,这样用一点问题都没有的,但是现在要VPN组网就发现两个局域网的IP地址是相同的,在远程访问时就会遇到问题,因为两边地址都相同,计算机没有那么智能,它例如我们要访问192.168.1.3的IP,计算机不知你是要访问对端的192.168.1.3还是本端的192.168.1.3,所以经常会遇到麻烦的.遇到这种问

如何搭建DHCP服务器及自动获取IP地址及相关操作

DHCP服务相关理论知识 DHCP服务分为以下三点, IP地址(例:192.168.1.0) 子网掩码(例:255.255.255.0) 网关 DHCP服务的好处: 减少管理员的工作量 避免输入错误的可能 避免IP冲突 提高了IP地址的利用率 方便客户端的配置 DHCP服务的分配方式: 自动分配:分配到一个IP地址后永久使用 手动分配:由DCHP服务器管理员专门指定IP地址 动态分配:使用完之后释放该IP,供其它客户机使用 DHCP租约的过程(四个步骤):1.客户机请求IP(Discover):

js判断ip地址,子网掩码,网关的逻辑性检查

因为要做静态地址配置的js校验,找了好多资料发现网上都是关于ip,mask的有效性检查,没有ip,submask,gateway的逻辑性判断,自己写下代码供需要的人参考. 普及下网关地址知识: 就是进行与运算1与1得1,1与0为0,0与0为0.首先把ip和子网掩码展开 10.70.64.223 00001010 .01000110.01000000.11011111 255.255.255.0 111111111.11111111.11111111.00000000 网段就是 00001010

js中的二进制操作相关类型和方法

Blob数据对象 MDN官方解释Blob对象:一个Blob对象就是一个包含有只读原始数据的类文件对象.Blob对象中的数据并不一定得是JavaScript中的原生形式.File接口基于Blob, 继承了Blob的功能,并且扩展支持了用户计算机上的本地文件. 创建Blob对象的方法有几种,可以调用Blob构造函数,还可以使用一个已有Blob对象上的slice()方法切出另一个Blob对象,还可以调用canvas对象上的toBlob方法. 实际上,Blob是计算机通用术语之一,全称写作:BLOB(b