www.cloud86.cn
分类: 系统运维
2005-07-02 10:26:32
//函数名:fucCheckDate() (YYYY-MM-DD)
//功能介绍:检查是否为日期
//参数说明:要检查的字符串
//返回值:0:不是日期 1:是日期
function fucCheckDate(strDate)
{
var nLen, nIdx ;
var csplit, cflag ;
var arrSplit = new Array('-', '.', '/') ;
var strYear, strMonth, strDay, strTmp ;
//如果日期为null,认为是日期
if (strDate == null) return 1 ;
//如果长度不满足:8 -- 10,为非法日期
nLen = strDate.length ;
if (nLen < 8 || nLen > 10) return 0 ;
//判断是否存在分割符,并记录分割符
cflag = "" ;
for (nIdx=0; nIdx
csplit = arrSplit[nIdx] ;
if (strDate.indexOf(csplit, 0) >= 0)
{
cflag = csplit ;
break ;
}
}
if ( cflag =="" ) //对没有分割符的处理
{
//如果长度<>8,为非法日期
if (nLen != 8)
return 0 ;
//截取日期中的年、月、日
strYear = strDate.substr(0,4) ;
strMonth = strDate.substr(4,2) ;
strDay = strDate.substr(6,2) ;
}
else //对存在分割符的处理
{
//截取日期中的年、月、日
strTmp = strDate ;
nIdx = strTmp.indexOf(cflag, 0) ;
strYear = strTmp.substr(0,nIdx) ;
strTmp = strTmp.substr(nIdx+1, strTmp.length - nIdx - 1) ;
nIdx = strTmp.indexOf(cflag, 0) ;
strMonth = strTmp.substr(0, nIdx) ;
strDay = strTmp.substr(nIdx+1, strTmp.length-nIdx-1) ;
if (strMonth.length < 2)
strMonth = "0" + strMonth ;
if (strDay.length < 2)
strDay = "0" + strDay ;
}
//判断年、月、日的合法性
if (strYear < '1900' || strYear > '9999' || strYear.length != 4)
return 0 ;
if (strMonth < '00' || strMonth > '12' || strMonth.length != 2)
return 0 ;
if (strDay < '00' || strDay > '31' || strDay.length != 2)
return 0 ;
//缺省为合法日期
return 1 ;
}
//函数名:fucCheckNUM()
//功能介绍:检查是否为数字
//参数说明:要检查的数字
//返回值:1为是数字,0为不是数字
function fucCheckNUM(NUM)
{
var i,j,strTemp;
strTemp="0123456789.";
if ( NUM.length == 0) return 0;
for (i=0;i
j = strTemp.indexOf(NUM.charAt(i));
if (j==-1)
{
//说明有字符不是数字
return 0;
}
}
//说明是数字
return 1;
}
/*************************************************************************
** 目的:
** 判断身份证件号码是否有效
** 参数:
** pszId : 表示身份证号码的字符串
** 返回值:
** 0 : 有效
** -1 : 无效
*************************************************************************/
function isPersonIdValid(pszId)
{
var nLen, nIndex, nRet ;
var strTmp ;
nRet = 0 ;
/*判断身份证的长度是否为18或15位*/
nLen = pszId.length ;
if ((nLen != 15) && (nLen != 18))
return (-1) ;
/*如果长度为15位,判断其各位是否为数字*/
if (nLen == 15)
{
for (nIndex=0; nIndex
strTmp = pszId.charAt(nIndex) ;
if (( strTmp < '0') || (strTmp > '9'))
{
nRet = -1 ;
break ;
}
}
}
return (nRet) ;
}
/*************************************************************************
** 目的:
** 对身份证件号码进行15位到18位的转换
** 参数:
** pszId15 : 15位的身份证号码
** 返回值:
** 转换成18位后的身份证号码
*************************************************************************/
function convPersonId15To18(pszId15)
{
var nIndex, nLen ;
var nSum ;
var pszId18 ;
var nArrPower = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2) ;
var chArrCheck = new Array('1','0','X','9','8','7','6','5','4','3', '2') ;
/*如果已经为18位,直接返回*/
nLen = pszId15.length;
if (nLen == 18)
{
pszId18 = pszId15 ;
return pszId18 ;
}
/*如果不是15位,返回错误*/
if (nLen != 15)
{
pszId18 = pszId15 ;
return pszId18 ;
}
/*准备数据*/
pszId18 = pszId15.substr(0,6) ;
pszId18 = pszId18 + "19" ;
pszId18 = pszId18 + pszId15.substr(6,9) ;
/*计算最后一位*/
nSum = 0 ;
for (nIndex=0; nIndex<17; nIndex++)
{
nSum = nSum + ( parseInt(pszId18.charAt(nIndex)) * nArrPower[nIndex] ) ;
}
nIndex = nSum - (nSum / 11*11) ;
pszId18 = pszId18 + chArrCheck[nIndex] ;
return pszId18 ;
}
//函数名:fucCheckIP()
//功能介绍:检查是否为IP
//参数说明:要检查的字符串
//返回值:0:不是 1:是
function fucCheckIP(a)
{
var va=a;
//中间有空格
if (a.indexOf(' ')!=-1)
{
alert(va+":IP中有空格");
return 0;
}
if (a.indexOf(".")==-1)
{
alert(va+":IP格式错误(***.***.***.***)");
return 0;
}
if(0 == a.indexOf("."))
{ alert(va+":IP格式错误(***.***.***.***)");
return 0;
}
//判断a 中的“.”是否多于3个
var count = 0;
var aa = a;
for (var i=0;i
var j = aa.indexOf(".");
if (j!=-1)
{
count = count+1;
//alert("count: "+count);
}
aa = aa.substring(j+1,a.length);
}
if(count>3)
{ alert(va+":IP格式错误(***.***.***.***)");
return 0;
}
if(count<3)
{ alert(va+":IP格式错误(***.***.***.***)");
return 0;
}
var L=a.length;
for(var j=0;j<4;j++)
{
//alert("j: "+j)
var temp = a.indexOf('.');
if (temp > -1)
{
var aSub = a.substring(0,temp);
//alert("aSub: "+aSub);
if(aSub>255)
{ alert(va+":数字取值范围为0~255");
return 0;
}
if(aSub<0)
{ alert(va+":数字取值范围为0~255");
return 0;
}
if(0 == fucCheckNUM(aSub))
{
alert(va+":IP中有非数字字符");
return 0;
}
}
else
{
var aSub = a;
//alert("--aSub: "+aSub);
if(aSub>255)
{ alert(va+":数字取值范围为0~255");
return 0;
}
if(aSub<0)
{ alert(va+":数字取值范围为0~255");
return 0;
}
if(0 == fucCheckNUM(aSub))
{ alert(va+":IP中有非数字字符");
return 0;
}
}
a = a.substring(temp+1,L);
}
return 1;
}