/**
*校驗模塊,提供常用的檢驗方法
*該模塊不依賴其它環境
*/
HUI.define("com.validation", function(requires, validation) {
//郵箱正則
var REG_EMAIL=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
//驗證郵箱地址
validation.checkEmail=function(str){
return REG_EMAIL.exec(str);
}
//驗證國內電話(支持分機號)
var REG_TEL=/^(0[0-9]{2,3}\-)?([1-9][0-9]{4,7})+(\-[0-9]{1,4})?$/;
validation.checkTel=function(str){
return REG_TEL.exec(str);
}
//驗證國內手機號
var REG_PHONE=/^(0|86|17951)?(13[0-9]|15[012356789]|18[0236789]|14[57])[0-9]{8}$/;
validation.checkPhone=function(str){
return REG_PHONE.exec(str);
}
//驗證整數
var REG_INTEGER=/^-?(([1-9]\d*)|0)$/;
validation.checkInteger=function(str){
return REG_INTEGER.exec(str);
}
//驗證非負數(浮點數默認精確到4位)
validation.checkNonnegative=function(str,decimal){
if(!decimal){
decimal=4;
}
var REG_NONNEGATIVE =new RegExp("^(([1-9][0-9]*)|0)(.[0-9]{1,"+decimal+"})?$");
return REG_NONNEGATIVE.exec(str);
}
//驗證常用用戶名(以字母開頭,允許5-16字節,允許字母數字下劃線)
var REG_USERNAME=/^[a-zA-Z][a-zA-Z0-9_]{4,15}$/;
validation.checkUserName=function(str){
return REG_USERNAME.exec(str);
}
//驗證常用密碼(允許6-18字節,允許字母數字下劃線及特殊字符.@!$%*#)
var REG_PWD=/^([a-zA-Z0-9]|\.|@|\!|\$|%|\*|#){5,17}$/;
validation.checkPwd=function(str){
return REG_PWD.exec(str);
}
//驗證身份證
var REG_IDCARD=/^\d{18}$|^\d{17,18}[a-zA-Z]{1}$|^\d{15}$/;
validation.checkIDCard=function(str){
return REG_IDCARD.exec(str);
}
//驗證QQ號碼
var REG_QQ=/^[1-9][0-9]{4,}$/;
validation.checkQQ=function(str){
return REG_QQ.exec(str);
}
//驗證郵政編碼
var REG_ZIPCODE=/^[1-9]\d{5}(?!\d)$/;
validation.checkZipCode=function(str){
return REG_ZIPCODE.exec(str);
}
//驗證是否包含HTML標記
var REG_HTML=/<(\S*?)[^>]*>.*?<\/\1>|<.*? \/>/;
validation.checkHTML=function(str){
return REG_HTML.exec(str);
}
//驗證網址URL
var REG_URL=/^[a-zA-z]+:\/\/[^\s]*$/;
validation.checkURL=function(str){
return REG_URL.exec(str);
}
//驗證IP
var REG_IP=/^\d+\.\d+\.\d+\.\d+$/;
validation.checkIP=function(str){
return REG_IP.exec(str);
}
//驗證是否包含中文或中文字符
var REG_CHCHAR=/[^\x00-\xff]/;
validation.checkCHChar=function(str){
return REG_CHCHAR.exec(str);
}
//驗證VISA卡號
var REG_VISA=/^(4\d{12}(?:\d{3})?)$/;
validation.checkVISA=function(str){
return REG_VISA.exec(str);
}
//驗證是否有效日期格式,如2000(./- 年)1(01)(./- 月)1(01)(日)
var REG_DATE=/^(\d{4})(\.|\/|\-|\s|\u5E74)?(\d{1,2})(\.|\/|\-|\s|\u6708)?(\d{1,2})(\s|\u65E5)?$/;
validation.checkDate=function(str){
str=str.replace(REG_DATE,function(){
return RegExp.$1+"-"+(RegExp.$3.length==1?"0"+RegExp.$3:RegExp.$3)+"-"+(RegExp.$5.length==1?"0"+RegExp.$5:RegExp.$5);
});
return String(new Date(str)).toLowerCase()=="invalid date"?false:true;
}
//驗證是否有效時間格式,如23:59:59
var REG_TIME=/^(([0-1][0-9])|(2[0-3]))(:|:|\s)([0-5][0-9])(:|:|\s)([0-5][0-9])$/;
validation.checkTime=function(str){
str=str.replace(/^(\d+).*?(\d+).*?(\d+)$/,function(){
return (RegExp.$1.length==1?"0"+RegExp.$1:RegExp.$1)+":"+(RegExp.$2.length==1?"0"+RegExp.$2:RegExp.$2)+":"+(RegExp.$3.length==1?"0"+RegExp.$3:RegExp.$3);
});
return REG_TIME.test(str);
}
});