用JavaScript判断日期、数字、整数和特殊字符

来源:互联网 发布:域名vip和top那个好 编辑:程序博客网 时间:2024/06/05 02:15

用JavaScript判断日期、数字、整数和特殊字符   [ 2005-09-23 | 作者:coli |

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

< 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',&acute;'"@#$%&^*',false)) alert('Error: Your password can not contain '"@#$%&^*'); 
其中false表示不包含有某些字符,true表示必须是哪些字符,缺省值为true 
*/ 
function LogicalValue(ObjStr,ObjType) 

var str=&acute;'; 
if ((ObjStr==null) || (ObjStr==&acute;') || ObjType==null) 

alert('函数LogicalValue缺少参数'); 
return false; 

var obj = document.all(ObjStr); 
if (obj.value==&acute;') return false; 
for (var i=2;i{ 
if (str!=&acute;') 
str += ','; 
str += 'arguments['+i+']'; 

str=(str==&acute;'?'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)的参数出错: sign为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==&acute;' || Dilimeter==null) 
Dilimeter = '-'; 
var tempy=&acute;'; 
var tempm=&acute;'; 
var tempd=&acute;'; 
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)的参数出错: sign为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&acute;'); 

else 

alert('No, one   or more letters of the string not in '1234567890&acute;'); 

结果执行的是else部分 
sample2: 
var password = '1234'; 
if (!SpecialString(password,&acute;'"@#$%',false)) 

alert('Yes, The password is correct.'); 

else 

alert('No, The password is contain one   or more letters of '"@#$%&acute;'); 

结果执行的是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{ 
if (compare.indexOf(string.charAt(i))==-1) 
return false 

return true; 

else 

for (var i=0;i{ 
if (compare.indexOf(string.charAt(i))!=-1) 
return false 

return true; 




//--> 
< /script>