고정 주소 구성에 대한 js 검증을 해야 하기 때문에 많은 정보를 검색해 보니 인터넷에서는 IP, 서브마스크, 게이트웨이에 대한 유효성 검사가 전부라는 것을 알 수 있었습니다. 필요하신 분들을 위해 직접 코드를 작성했습니다.
게이트웨이 주소에 대한 인기 지식:
첫 번째 포인트: 1과 1을 AND 연산하여 1을 구하고, 1과 0은 0이고, 0과 0은 0입니다. 먼저 IP와 서브넷 마스크를 확장하세요
10.70.64.223 00001010 .01000110.01000000.11011111
255.255.255.0 111111111.11111111.11111111.00000000
네트워크 세그먼트는 00001010 .01000110.01000000.00000000
그런 다음 십진수로 변환하면 다음과 같습니다: 10.70.64.0
두 번째 사항: IP 주소와 서브넷 마스크의 AND 연산과 게이트웨이 주소와 서브넷 마스크의 AND 연산이 동일해야 합니다. 호스트 번호가 일관됩니다.
여기서는 먼저 js를 사용하여 '.'에 따라 ip, 마스크, 게이트웨이를 분리한 다음 결합하여 판단합니다.
세 번째 요점: js의 비트별 AND 연산
결과 = [정수 1] & [정수 1]
&는 두 개의 32비트 표현식의 각 비트에 대해 비트 AND 연산을 수행합니다. 두 비트가 모두 1이면 결과는 1입니다. 그렇지 않으면 결과는 0입니다.
공유ip 주소, 서브넷 마스크, 게이트웨이에 대한 js 논리적 판단상세 코드
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; }
IP 및 서브넷 마스크 공유의 적법성을 확인하는 JS 확인 코드:
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; //"合法" } }
위 내용은 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다.