用JavaScript判断日期、数字、整数和特殊字符
如何在用一个程序检测所输入的内容是否合法,以下是本人自己编写的一个程序对日期、数字、整数和特殊字符进行了判断同时还可判断是正数还是负数(对数值类和整数而言)

<script language="javascript">
<!--


/**
LogicalValue:用于判断对象的值是否符合条件,现已提供的选择有:
       integer:整型,还可判断正整型和负整型
       number :数值型,同样可判断正负
       date  :日期型,可支持以自定义分隔符的日期格式,缺省是以'-'为分隔符
       string :判断一个字符串包括或不包括某些字符
返回值:
  true或false

参数:
ObjStr :对象标识符——对象名;
ObjType:对象类型('integer','number','date','string'之一)

其他说明:
  当对象值为空时,则返回错误。

Author:PPDJ  

例子:
  example 1:要求检验输入框text1的输入数据是否是“整型”数据,若不是,则提示
    if (!LogicalValue('text1','integer')) alert('Error: Your must input a integer number');
  example 2:要求检验输入框text1的输入数据是否是“正整型”数据,若不是,则提示  
    if (!LogicalValue('text1','integer','+')) alert('Error: Your must input a positive integer number');
  example 3:要求检验输入框text1的输入数据是否是“负整型”数据,若不是,则提示  
    if (!LogicalValue('text1','integer','-')) alert('Error: Your must input a negative integer number');
  exmaple 4:要求检验输入框text1的输入数据是否是数值,若不是,则提示  
    if (!LogicalValue('text1','number')) alert('Error: Your must input a number');
  exmaple 5:要求检验输入框text1的输入数据是否是“正”数值,若不是,则提示  
    if (!LogicalValue('text1','number','+')) alert('Error: Your must input a number');
  exmaple 6:要求检验输入框text1的输入数据是否是“负”数值,若不是,则提示  
    if (!LogicalValue('text1','number','-')) alert('Error: Your must input a number');
  example 7:要求检验输入框text1的输入数据是否是日期型,若不是,则提示
    if (!LogicalValue('text1','date')) alert('Error: Your must input a logical date value');
    若它的分隔符为A,“A”是一个变量,如常用的'-'和'/',则用如下语法
    if (!LogicalValue('text1','date',A)) alert('Error: Your must input a logical date value');
    或当分隔符为'/'时
    if (!LogicalValue('text1','date','/')) alert('Error: Your must input a logical date value');
    当分隔符为'-'时,可不要参数'-',可带上
  example 8:要求检验输入框text1的输入表示颜色的字符串是否合理,若不合理,则提示
    if (!LogicalValue('text1','string','0123456789ABCDEFabcdef')) alert('Error: Your must input a logical color value');
  example 9:要求检验输入框text1的输入表示密码的字符串是否不含“'"@#$%&^*”这些字符,若含有,则提示
    if (!LogicalValue('text1','string',''"@#$%&^*',false)) alert('Error: Your password can not contain '"@#$%&^*');
    其中false表示不包含有某些字符,true表示必须是哪些字符,缺省值为true
*/
function LogicalValue(ObjStr,ObjType)
{
  var str='';
  if ((ObjStr==null) || (ObjStr=='') || ObjType==null)
  {
   alert('函数LogicalValue缺少参数');
   return false;
  }
  var obj = document.all(ObjStr);
  if (obj.value=='') return false;
  for (var i=2;i<arguments.length;i++)
  { 
   if (str!='')
     str += ',';
   str += 'arguments['+i+']';
  }
  str=(str==''?'obj.value':'obj.value,'+str);
  var temp=ObjType.toLowerCase();
  if (temp=='integer')
  {
    return eval('IsInteger('+str+')');
  }
  else if (temp=='number')
  {
   return eval('IsNumber('+str+')');
  }
  else if (temp=='string')
  {
   return eval('SpecialString('+str+')');
  }
  else if (temp=='date')
  {
   return eval('IsDate('+str+')');
  }
  else
  {
   alert('"'+temp+'"类型在现在版本中未提供');
   return false;
  }
}

/**
IsInteger: 用于判断一个数字型字符串是否为整形,
  还可判断是否是正整数或负整数,返回值为true或false
string: 需要判断的字符串
sign: 若要判断是正负数是使用,是正用'+',负'-',不用则表示不作判断
Author: PPDJ
sample:
  var a = '123';
  if (IsInteger(a))
  {
   alert('a is a integer');
  }
  if (IsInteger(a,'+'))
  {
   alert(a is a positive integer);
  }
  if (IsInteger(a,'-'))
  {
   alert('a is a negative integer');
  }
*/

function IsInteger(string ,sign)

  var integer;
  if ((sign!=null) && (sign!='-') && (sign!='+'))
  {
   alert('IsInter(string,sign)的参数出错:nsign为null或"-"或"+"');
   return false;
  }
  integer = parseInt(string);
  if (isNaN(integer))
  {
   return false;
  }
  else if (integer.toString().length==string.length)
  { 
   if ((sign==null) || (sign=='-' && integer<0) || (sign=='+' && integer>0))
   {
     return true;
   }
   else
     return false; 
  }
  else
   return false;
}

/**
IsDate: 用于判断一个字符串是否是日期格式的字符串

返回值:
  true或false
  
参数:
DateString: 需要判断的字符串
Dilimeter : 日期的分隔符,缺省值为'-'

Author: PPDJ
sample:
  var date = '1999-1-2';
  if (IsDate(date))
  {
   alert('You see, the default separator is "-");
  }
  date = '1999/1/2";
  if (IsDate(date,'/'))
  {
   alert('The date's separator is "/");
  }
*/

function IsDate(DateString , Dilimeter)
{
  if (DateString==null) return false;
  if (Dilimeter=='' || Dilimeter==null)
   Dilimeter = '-';
  var tempy='';
  var tempm='';
  var tempd='';
  var tempArray;
  if (DateString.length<8 && DateString.length>10)
    return false;   
  tempArray = DateString.split(Dilimeter);
  if (tempArray.length!=3)
   return false;
  if (tempArray[0].length==4)
  {
   tempy = tempArray[0];
   tempd = tempArray[2];
  }
  else
  {
   tempy = tempArray[2];
   tempd = tempArray[1];
  }
  tempm = tempArray[1];
  var tDateString = tempy + '/'+tempm + '/'+tempd+' 8:0:0';//加八小时是因为我们处于东八区
  var tempDate = new Date(tDateString);
  if (isNaN(tempDate))
   return false;
 if (((tempDate.getUTCFullYear()).toString()==tempy) && (tempDate.getMonth()==parseInt(tempm)-1) && (tempDate.getDate()==parseInt(tempd)))
  {
   return true;
  }
  else
  {
   return false;
  }
}

/**
IsNumber: 用于判断一个数字型字符串是否为数值型,
  还可判断是否是正数或负数,返回值为true或false
string: 需要判断的字符串
sign: 若要判断是正负数是使用,是正用'+',负'-',不用则表示不作判断
Author: PPDJ
sample:
  var a = '123';
  if (IsNumber(a))
  {
   alert('a is a number');
  }
  if (IsNumber(a,'+'))
  {
   alert(a is a positive number);
  }
  if (IsNumber(a,'-'))
  {
   alert('a is a negative number');
  }
*/

function IsNumber(string,sign)
{
  var number;
  if (string==null) return false;
  if ((sign!=null) && (sign!='-') && (sign!='+'))
  {
   alert('IsNumber(string,sign)的参数出错:nsign为null或"-"或"+"');
   return false;
  }
  number = new Number(string);
  if (isNaN(number))
  {
   return false;
  }
  else if ((sign==null) || (sign=='-' && number<0) || (sign=='+' && number>0))
  {
   return true;
  }
  else
   return false;
}



/**
SpecialString: 用于判断一个字符串是否含有或不含有某些字符

返回值:
  true或false
  
参数:
string   : 需要判断的字符串
compare  : 比较的字符串(基准字符串)
BelongOrNot: true或false,“true”表示string的每一个字符都包含在compare中,
       “false”表示string的每一个字符都不包含在compare中

Author: PPDJ
sample1:
  var str = '123G';
  if (SpecialString(str,'1234567890'))
  {
   alert('Yes, All the letter of the string in '1234567890'');
  }
  else
  {
   alert('No, one or more letters of the string not in '1234567890'');
  }
  结果执行的是else部分
sample2:
  var password = '1234';
  if (!SpecialString(password,''"@#$%',false))
  {
   alert('Yes, The password is correct.');
  }
  else
  {
   alert('No, The password is contain one or more letters of '"@#$%'');
  } 
  结果执行的是else部分
*/
function SpecialString(string,compare,BelongOrNot)
{
  if ((string==null) || (compare==null) || ((BelongOrNot!=null) && (BelongOrNot!=true) && (BelongOrNot!=false)))
  {
   alert('function SpecialString(string,compare,BelongOrNot)参数错误');
   return false;
  }
  if (BelongOrNot==null || BelongOrNot==true)
  {
   for (var i=0;i<string.length;i++)
   {
     if (compare.indexOf(string.charAt(i))==-1)
      return false
   }
   return true;
  }
  else
  {
   for (var i=0;i<string.length;i++)
   {
     if (compare.indexOf(string.charAt(i))!=-1)
      return false
   }
   return true;
  }
}


//-->
</script>