Chinaunix首页 | 论坛 | 博客
  • 博客访问: 541221
  • 博文数量: 81
  • 博客积分: 5015
  • 博客等级: 大校
  • 技术积分: 866
  • 用 户 组: 普通用户
  • 注册时间: 2005-03-25 09:08
个人简介

www.cloud86.cn

文章分类

全部博文(81)

文章存档

2017年(2)

2014年(1)

2011年(1)

2007年(5)

2006年(31)

2005年(41)

我的朋友

分类: 系统运维

2005-07-02 10:26:32

JavaScript函数

//函数名: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;
}

阅读(1483) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~