ip校验
// ip校验
function check(ip) {
var re =
/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/
var bl = re.test(ip);
if (!bl) {
return 'IP格式错误,范例:192.168.255.255'
}
子网掩码校验
// 子网掩码校验
function validateMask(MaskStr) {
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) || (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;
}
function _checkIput_fomartIP(ip) {
return (ip + 256).toString(2).substring(1); //格式化输出(补零)
}
网关校验:
/**
* func: 网关校验: 校验IP地址,子网掩码和默认网关的关系是否正确
* w是默认网关,y是子网掩码,i是IP地址。
* */
function checkIp(w, y, i) {
var ws = w.split('.');
var ys = y.split('.');
var is = i.split('.');
for (var index in ws) {
var cw = to8Bit(ws[index]);
var cy = to8Bit(ys[index]);
var ci = to8Bit(is[index]);
for (var jndex = 0; jndex < 8; jndex++) {
if (cy[jndex] == "1") {
if (cw[jndex] != ci[jndex]) return false;
}
}
}
return true;
}
function to8Bit(number) {
var result = parseInt(number).toString(2);
while (result.length < 8) {
result = "0" + result;
}
return result;
}
layui中自定义校验规则——校验ip、子网掩码、网关:
/******************* 自定义校验 ************************/
form.verify({
addr: check,
netmask: function (MaskStr) {
if (!validateMask(MaskStr)) {
return '子网掩码格式错误,范例:255.255.255.0'
}
},
gateway: function (gateway) {
//获取表单区域所有值
let basic = form.val("filter_basic_config");
let ret = checkIp(gateway, basic.netmask, basic.addr)
// console.log("ret == ", ret)
if (!ret) {
return '网关格式错误!'
}
},
});