/**
* 函數名: validateMask
* 函數功能: 驗證子網路遮罩的合法性
* 函數作者: 236F(fuwei236#gmail.com)
* 傳入參數: 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]);
if ( ip1<0 || ip1>255 /* 每個域值範圍0-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位二進位值
* 函數作者: 236F(fuwei236#gmail.com)
* 傳入參數: ip:點分十進位的值(0~255),int類型的值,
* 主調函數: validateMask
* 調用函數: 無
* 傳回值: ip對應的二進位值(如:傳入255,返回11111111;傳入1,返回00000001)
**/
function _checkIput_fomartIP(ip)
{
return (ip+256).toString(2).substring(1); //格式化輸出(補零)
}
===================分隔字元===================
測試頁面test.htm
===================分隔字元===================
<html>
<head>
<title></title>
<script src="validateMask.js"></script>
<script>
function test(MaskStr)
{
alert("IP地址為: "+ MaskStr + " 驗證結果:" + validateMask(MaskStr));
}
</script>
</head>
<body>
<center>
<h1>子網路遮罩驗證
</h1>
<input type="text" name="mask" id="mask" value="">
<input type="button" name="mytest" id="mytest" value="點擊驗證輸入框中的值" onclick="test(mask.value)">
</center>
</body>
</html>
==============
//驗證ip有效性
function validateip(ip) {
var result = false;
if (!(/^(/d{1,3})(/./d{1,3}){3}$/.test(ip))){
return false;
}
var reSpaceCheck = /^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])/.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)/.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)/.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$/;
var validip = ip.match(reSpaceCheck);
if (validip != null) {
result = true;
}
return result;
}
//驗證子網路遮罩有效性
function validateNetMast(netmask) {
var result = false;
if (!(/^(/d{1,3})(/./d{1,3}){3}$/.test(netmask))){
return true;
}
var reSpaceCheck = /^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])/.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)/.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)/.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])$/;
var validip = netmask.match(reSpaceCheck);
if (validip != null) {
var mask_binary = conversionBinary(netmask);
if(-1 != mask_binary.indexOf("01")){
result = true;
}
} else {
result = true;
}
return result;
}