/**
* 函数名: 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;
}
分享到:
相关推荐
在互联网技术中,网络配置参数的...通过本篇文章的内容,您应该已经了解了如何使用JavaScript和正则表达式来验证IP地址、子网掩码、网关和MAC地址的正确性。这种方式在前端界面验证和网络配置工具中非常常见和有用。
这可以用来验证IP地址、子网掩码和网关地址之间的逻辑一致性。 JavaScript中校验IP地址和子网掩码合法性的方法通常使用正则表达式来实现。对于IP地址,可以使用正则表达式来匹配每一段数字的合法性,确保其为0到255...
首先,让我们来解析一下验证IP地址有效性的JavaScript函数。有效的IPv4地址由四个十进制数构成,每个数在0到255之间,四个数之间通过点(.)分隔。在标题“js验证IP及子网掩码的合法性有效性示例”中提及的函数...
这里,“接口名”是指你要修改的网络接口名称,如“本地连接”或“无线网络连接”,而“新IP 地址”、“子网 掩码”和“默认网关”则分别代表新的IP地址、子网掩码和默认网关的值。 对于DNS服务器的设置,可以使用...
文件1.txt可能包含了源代码示例,演示了如何使用JavaScript实现IP地址的分配、验证、转换等功能。通过阅读和理解这个文件,开发者可以学习到具体的编程技巧和实践应用。 总结,"非常强悍的JS实现IP地址分配"涉及到...
总结来说,本文通过JavaScript代码展示了如何实现对IP地址、子网掩码和网关地址的合法性验证。利用正则表达式对IP地址格式的匹配、对IP地址和子网掩码执行按位与操作以获取网络地址,以及验证网关地址是否位于同一...
综上所述,"校验IP地址"不仅包括验证IP地址的格式,还涉及IP地址的结构、分类、转换、子网掩码、解析、管理等多个方面。在实际编程或网络管理工作中,正确地处理和校验IP地址是不可或缺的技能。
2. IP验证:验证IP地址的有效性,确保它符合IPv4或IPv6的格式规范,这可以通过正则表达式匹配实现。 3. 地理位置定位:通过IP地址反查地理位置信息,这通常需要调用第三方API,如IP-API、GeoIP等服务。 4. 网络...
AutoJS在这方面的应用可能包括编写脚本来检测或验证输入的IP地址是否属于特定的网段,或者用于自动化网络配置、监控网络流量等。它可以通过JavaScript库,如Node.js的`net`模块,实现这些功能。例如,你可以创建一个...
在IPV6中,前缀是指地址的最前面连续的一组1,后面跟着的全部是0,这个前缀的作用类似于IPV4的子网掩码,用于定义网络地址和主机地址的边界。例如,1205::fff0:ffd1:1021/120中的“/120”就是前缀长度,表示前120位...
CIDR(无类别域间路由)表示法是一种用于IP地址和子网掩码组合的紧凑格式,形如`IP/前缀长度`。例如,`192.0.2.0/24` 表示一个包含256个地址的IPv4网络,其中前24位是网络部分,剩下的8位是主机部分。这种表示方式...
每个子网都有自己的网络地址和子网掩码,用于确定哪些IP地址属于该子网。 6. **源代码分析**:压缩包中的源代码可能是用Python、Java、C++或其他编程语言编写的,用于实现动态发现路由及子网拓扑的算法。这些代码...
1. **网络地址**:这是 IP 地址和子网掩码逻辑与操作的结果,标识了网络部分,通常用于路由器配置。 2. **广播地址**:每个子网中的最后一个有效 IP 地址,用于网络中所有设备发送广播信号。 3. **可用 IP 地址范围*...
理解IP地址的分类(IPv4和IPv6)、子网掩码、广播地址和网络地址是网络基础。同时,DNS将人类可读的域名转换为IP地址,确保正确通信。路由选择则决定了数据包在网络中的传输路径。 3. 前端交互:在用户界面中,地址...
- js/:JavaScript文件,用于增强前端交互和验证。 - data/:可能存储数据库连接信息,或者临时或缓存数据。 此源码的v2.3更新可能涉及优化性能、增加新功能、修复安全漏洞或改善用户体验。对于开发者来说,研究这...
5. **IP段信息**:对于IP段查询,系统可能包含CIDR(无类别域间路由)块的解析,以及子网掩码等相关网络划分信息。 6. **反向DNS查询**:高级的IP查询系统还会提供反向DNS查询功能,即通过IP找到与其对应的域名,这...
IPv6子网划分是将一个大的IPv6地址空间划分为更小的、独立的子网,以便有效地管理和分配IP地址。这有助于优化网络资源的使用,提高网络安全性和简化路由配置。 首先,IPv6子网计算器是一种实用工具,它能够帮助网络...