js验证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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值