Parce que je dois effectuer une vérification js de la configuration de l'adresse statique, j'ai recherché beaucoup d'informations et j'ai découvert qu'Internet se concentre uniquement sur la vérification de la validité de l'adresse IP et du masque. Il n'y a pas de jugement logique sur l'adresse IP, le sous-masque et la passerelle. j'ai écrit le code moi-même pour ceux qui en ont besoin.
Connaissances populaires sur les adresses de passerelle :
Premier point : Effectuez l'opération ET de 1 et 1 pour obtenir 1, 1 et 0 valent 0, et 0 et 0 valent 0. Développez d’abord l’adresse IP et le masque de sous-réseau
10.70.64.223 00001010 .01000110.01000000.11011111
255.255.255.0 111111111.11111111.11111111.00000000
Le segment de réseau est 00001010 .01000110.01000000.00000000
Puis converti en décimal, il s'agit de : 10.70.64.0
Deuxième point : L'opération ET de l'adresse IP et du masque de sous-réseau et l'opération ET de l'adresse de passerelle et du masque de sous-réseau doivent être les mêmes. les numéros d'hôte sont cohérents.
Ici, j'utilise d'abord js pour séparer l'adresse IP, le masque et la passerelle selon « . », puis je les combine pour porter un jugement.
Le troisième point : Fonctionnement ET au niveau du bit de js
résultat = [entier 1] & [entier 1]
& effectue une opération ET au niveau du bit sur chaque bit de deux expressions de 32 bits. Si les deux bits sont à 1, le résultat est 1. Sinon, le résultat est 0.
Partagerjugement logique js sur l'adresse IP, le masque de sous-réseau, la passerelleCode détaillé
function checkIP(ip) { obj=ip; var exp=/^(\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 reg = obj.match(exp); if(reg==null) { return false;//不合法 } else { return true; //合法 } } function checkMask(mask) { obj=mask; var exp=/^(254|252|248|240|224|192|128|0)\.0\.0\.0|255\.(254|252|248|240|224|192|128|0)\.0\.0|255\.255\.(254|252|248|240|224|192|128|0)\.0|255\.255\.255\.(254|252|248|240|224|192|128|0)$/; var reg = obj.match(exp); if(reg==null) { return false; //"非法" } else { return true; //"合法" } } var static_ip= document.getElementById('static_ip').value; var static_mask= document.getElementById('static_mask').value; var static_gw= document.getElementById('static_gw').value; if (static_ip=='') { // $("#static_ip_error").css("display","block"); document.getElementById('static_ip').focus(); return false; }else if(!checkIP(static_ip)) { //$("#static_ip_error").css("display","none"); document.getElementById('static_ip').focus(); return false; } if(static_mask=='') { //$("#static_mask_error").css("display","block"); document.getElementById('static_mask').focus(); return false; }else if(!checkMask(static_mask)) { //$("#static_mask_error").css("display","none"); document.getElementById('static_mask').focus(); return false; } if(static_gw=='') { //$("#static_gw_error").css("display","block"); document.getElementById('static_gw').focus(); return false; }else if(!checkIP(static_gw)) { //$("#static_gw_error").css("display","none"); document.getElementById('static_gw').focus(); return false; } if(static_ip == static_mask || static_mask == static_gw || static_mask == static_gw) { alert('地址输入错误!'); return false; //3个地址不能相同 } var static_ip_arr = new Array; var static_mask_arr = new Array; var static_gw_arr = new Array; static_ip_arr = static_ip.split("."); static_mask_arr = static_mask.split("."); static_gw_arr = static_gw.split("."); var res0 = parseInt(lan_ip_arr[0]) & parseInt(static_mask_arr[0]); var res1 = parseInt(lan_ip_arr[1]) & parseInt(static_mask_arr[1]); var res2 = parseInt(lan_ip_arr[2]) & parseInt(static_mask_arr[2]); var res3 = parseInt(lan_ip_arr[3]) & parseInt(static_mask_arr[3]); var res0_gw = parseInt(static_gw_arr[0]) & parseInt(static_mask_arr[0]); var res1_gw = parseInt(static_gw_arr[1]) & parseInt(static_mask_arr[1]); var res2_gw = parseInt(static_gw_arr[2]) & parseInt(static_mask_arr[2]); var res3_gw = parseInt(static_gw_arr[3]) & parseInt(static_mask_arr[3]); if(res0==res0_gw && res1==res1_gw && res2==res2_gw && res3==res3_gw) { }else{ alert('IP地址与子网掩码、网关地址不匹配!'); return false; }
Code de vérification JS pour la légalité de l'IP et du partage du masque de sous-réseau :
function checkIP(ip) { obj=ip; var exp=/^(\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 reg = obj.match(exp); if(reg==null) { return false;//不合法 } else { return true; //合法 } } function checkMask(mask) { obj=mask; var exp=/^(254|252|248|240|224|192|128|0)\.0\.0\.0|255\.(254|252|248|240|224|192|128|0)\.0\.0|255\.255\.(254|252|248|240|224|192|128|0)\.0|255\.255\.255\.(254|252|248|240|224|192|128|0)$/; var reg = obj.match(exp); if(reg==null) { return false; //"非法" } else { return true; //"合法" } }
Ce qui précède représente l’intégralité du contenu de cet article, j’espère qu’il sera utile à l’étude de chacun.