标题: 求达人编个检验子网掩码是否正确的批处理
[打印本页]
作者: lg560852
时间: 2007-7-28 12:48
标题: 求达人编个检验子网掩码是否正确的批处理
RT
作者: lg560852
时间: 2007-7-28 12:50
俺只找到了这个:
利用javascript验证子网掩码的合法性
先使用正则表达式来验证(^((\d|[01]?\d\d|2[0-4]\d|25[0-5])\.){3}(\d|[01]?\d\d|2[0-4]\d|25[0-5])$)|^(\d|[1-2]\d|3[0-2])$,再使用下面的方法(ip地址的正则表达式为^((\d|[01]?\d\d|2[0-4]\d|25[0-5])\.){3}(\d|[01]?\d\d|2[0-4]\d|25[0-5])$,mac地址的正则表达式为([0-9a-fA-F]{2}[-:]){5}[0-9a-fA-F]{2}$)
mask是子网掩码的input,view是alert的字段,number是一个hidden,用来获取从左到右最后一个1是第几位
function maskValidate(form,mask,view,number){
var netMask=mask.value;
var netMask0=netMask.split(".")[0];
var reg
var tmp=128;
flaglength=0;
startlength=0;
endlength=0;
flag=0;
var myReg = /^(\d|[1-2]\d|3[0-2])$/;
if(netMask.match(myReg) || netMask==""){
number.value=netMask;
return true;
}else if(netMask!="" && (netMask.split(".")[0]!=0 || netMask.split(".")[1]!=0 || netMask.split(".")[2]!=0 || netMask.split(".")[3]!=0)){
if((tmp & netMask0)==0){
alert(view+"不合法");
return false;
}
var tmpMask=netMask0;
for(var i=0;i<4;i++){
startlength=0;
tmpMask=netMask.split(".")[i];
for(var j=0;j<8;j++){
if(flag==0 && (tmp & tmpMask)==0){
tmpMask=(tmpMask<<1);
flag=1;
startlength=j+i*8;
}else if(flag==1 && (tmp & tmpMask)==128){
alert(view+"不合法");
return false
}else{
tmpMask=(tmpMask<<1);
}
}
}
number.value=startlength;
}
return true;
}
作者: wudixin96
时间: 2007-7-28 13:25
找到JS不就一样嘛?
作者: lg560852
时间: 2007-7-28 13:36
:enda
echo %yy%
set /p uu=输入子网掩码(格式:255.255.255.0):
echo %uu%|findstr "^[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*$">nul||goto failb
set _uu=%uu:.= %
call :checkb %_uu%
goto end
:checkb
if "%4"=="" goto failb
if "%1"=="0" goto failb
if %4 gtr %3 goto failb
if %3 gtr %2 goto failb
if %2 gtr %1 goto failb
for %%u in (%1 %2 %3 %4) do (if %%u gtr 255 goto failb
for %%t in (0,128,192,224,240,248,252,254,255) do (if "%%u"=="%%t" goto endb)
goto failb)
:failb
::cls
echo %uu%是错误的子网掩码!!
echo.
pause
goto enda
:endb
:end
这段代码为什么%U只执行一遍??
运行后:
C:\>echo
ECHO 处于打开状态。
C:\>set /p uu=输入子网掩码(格式:255.255.255.0):
输入子网掩码(格式:255.255.255.0):255.255.255.1
C:\>echo 255.255.255.1 | findstr "^[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*$" 1>nul || g
oto failb
C:\>set _uu=255 255 255 1
C:\>call :checkb 255 255 255 1
C:\>if "1" == "" goto failb
C:\>if "255" == "0" goto failb
C:\>if 1 GTR 255 goto failb
C:\>if 255 GTR 255 goto failb
C:\>if 255 GTR 255 goto failb
C:\>for %u in (255 255 255 1) do (
if %u GTR 255 goto failb
for %t in (0 128 192 224 240 248 252 254 255) do (if "%u" == "%t" goto endb )
goto failb
)
C:\>(
if 255 GTR 255 goto failb
for %t in (0 128 192 224 240 248 252 254 255) do (if "255" == "%t" goto endb )
goto failb
)
C:\>(if "255" == "0" goto endb )
C:\>(if "255" == "128" goto endb )
C:\>(if "255" == "192" goto endb )
C:\>(if "255" == "224" goto endb )
C:\>(if "255" == "240" goto endb )
C:\>(if "255" == "248" goto endb )
C:\>(if "255" == "252" goto endb )
C:\>(if "255" == "254" goto endb )
C:\>(if "255" == "255" goto endb )
C:\>goto end