用JavaScript判斷日期、數字、整數和特殊字元

來源:互聯網
上載者:User


(www.Jojoo.net)  2002-1-1 (請雙擊自動滾屏觀看,單擊停止,再擊..)

如何在用一個程式檢測所輸入的內容是否合法,以下是本人自己編寫的一個程式對日期、數字、整數和特殊字元進行了判斷同時還可判斷是正數還是負數(對數值類和整數而言)

<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>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.