/*************************************************
Validator v2.0
cody by www.phppx.com 新程php培训
date : 2011-12
*************************************************/
Validator = {
Require : /.+/, //一定有值
Username : /^[\u4E00-\u9FA5\w]{3,20}$/, //用户名
Password : /^[\w-_\~!@#\$%\^&\*\.\(\)\[\]\{\}<>\?\\\/'\"]{6,16}$/, //密码
V_code : /^[a-zA-Z0-9]{4}$/, //验证码
Email : /^[0-9a-zA-Z]+([-\._][0-9a-zA-Z]+)*@([0-9a-zA-Z][0-9a-zA-Z-]*\.)+([a-zA-Z]{2,})+$/,
Domain : /^([0-9a-zA-Z][0-9a-zA-Z-]*\.)+([a-zA-Z]{2,})+$/, //域名
Phone : /^\d{3,4}-\d{7,8}(-\d{1,5})?$/, //固定电话
Mobile : /^1\d{10}$/, //手机号码
Url : /^http:\/\/([0-9a-zA-Z][0-9a-zA-Z-]*\.)+([a-zA-Z]{2,})+/, //url
IdCard : /^\d{15}(\d{2}[X0-9])?$/, //身份证
zipCode : /^\d{6}$/, //邮编
Currency : /^\d+\.\d{2}$/, //货币
Number : /^\d+$/, //数字
QQ : /^[1-9]\d{5,11}$/, //QQ
Integer : /^[-\+]?\d+$/, //有正负的数字
Double : /^[-\+]?\d+(\.\d+)?$/, //有正负的小数
English : /^[A-Za-z]+$/, //英文
Chinese : /^[\u4E00-\u9FA5]+$/, //中文
Lblank : /^\s+/, //左空格
Rblank : /\s+$/, //右空格
UnLblank : /^[^\s]+/,
UnRblank : /[^\s]+$/,
regexp : /^\/.+\/i?m?g?$/, //正则
date : /^(?:(?!0000)[0-9]{4}([-/.]?)(?:(?:0?[1-9]|1[0-2])([-/.]?)(?:0?[1-9]|1[0-9]|2[0-8])|(?:0?[13-9]|1[0-2])([-/.]?)(?:29|30)|(?:0?[13578]|1[02])([-/.]?)31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)([-/.]?)0?2([-/.]?)29)$/,
dateB : /^(?:(?:1[6-9]|[2-9][0-9])[0-9]{2}([-/.]?)(?:(?:0?[1-9]|1[0-2])\1(?:0?[1-9]|1[0-9]|2[0-8])|(?:0?[13-9]|1[0-2])\1(?:29|30)|(?:0?[13578]|1[02])\1(?:31))|(?:(?:1[6-9]|[2-9][0-9])(?:0[48]|[2468][048]|[13579][26])|(?:16|[2468][048]|[3579][26])00)([-/.]?)0?2\2(?:29))$/,
datetime : /^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)\s+([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$/,
time : /^([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$/,
ipv4 : /^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$/, //ip地址
UnSafe : /[-_\~!@#\$%\^&\*\.\(\)\[\]\{\}<>\?\\\/\'\"\s]/, //特殊字符
IsSafe : function(str){return !this.UnSafe.test(str);}, //非特殊字符
SafeString : "this.IsSafe(value)",
Limit : "this.limit(obj.value.length,_element.min,_element.max)",
LimitB : "this.limit(this.LenB(value), _element.min, _element.max)",
Repeat : "obj.value == document.getElementById(_element.to).value",
Range : "Number(_element.min) < obj.value && obj.value < Number(_element.max)",
Compare : "this.compare(obj.value,_element.operator,Number(_element.to))",
Custom : "_element.regexp.test(obj.value)",
Group : "this.MustChecked(_element.name, _element.min, _element.max)",
okElements : [],
errorElements : [],
Validate : function(){
for(var id in this.Element){
var _element = this.Element[id];
var obj = document.getElementById(id);
var _dataType = _element.dataType;
var _okMsg = _element.okMsg;
var _errorMsg = _element.errorMsg;
this.ClearState(id); //清理当前元素状态
if(_element.require == "false" && obj.value == "") continue; //如果不是require,value为空则不做验证
switch(_dataType){
case "Repeat" :
case "Range" :
case "Compare" :
case "Custom" :
case "Group" :
case "Limit" :
case "LimitB" :
case "SafeString" :
if(!eval(this[_dataType])) { //如果没有通过验证
this.AddError(id);
} else {
this.AddOk(id);
}
break;
default :
if(!this[_dataType].test(obj.value)) { //其余的用正则做验证
this.AddError(id);
} else {
this.AddOk(id);
}
break;
}
}
this.ShowOkMsg();
return(this.ShowErrorMsg());
},
ValidateOne : function(obj,id){
this.okElements = [];
this.errorElements = [];
var _element = eval("this.Element."+id); //获取到当前元素的相关资料
var _dataType = _element.dataType; //获取单个的dataType的值
var _okMsg = _element.okMsg;
var _errorMsg = _element.errorMsg;
this.ClearState(id); //清理状态
if(_element.require == "false" && obj.value == ""){ //如果require这个属性为false,并且value为空,就不做验证
var b; //do nothing;
} else {
switch(_dataType){
case "Repeat" :
case "Range" :
case "Compare" :
case "Custom" :
case "Group" :
case "Limit" :
case "LimitB" :
case "SafeString" :
if(!eval(this[_dataType])) { //如果验证失败
this.AddError(id);
} else { //如果验证成功
this.AddOk(id);
}
break;
default : //做正则验证
if(!this[_dataType].test(obj.value)){ //如果验证失败
this.AddError(id);
} else { //如果验证成功
this.AddOk(id);
}
break;
}
}
this.ShowOkMsg();
return( this.ShowErrorMsg() );
},
AddError: function (id){
this.errorElements[this.errorElements.length] = id;
},
AddOk: function (id){
this.okElements[this.okElements.length] = id;
},
//打印错误信息
ShowErrorMsg : function(){
var errorElements = this.errorElements;
if(errorElements.length > 0){
var errCount = this.errorElements.length;
for(var i=0;i 0){
for(i=0;i op2);
case "GreaterThanEqual":
return (op1 >= op2);
case "LessThan":
return (op1 < op2);
case "LessThanEqual":
return (op1 <= op2);
default:
return (op1 == op2);
}
},
//判断单选,复选的选择情况
MustChecked : function(name, min, max){
var groups = document.getElementsByName(name);
var hasChecked = 0;
min = min || 1;
max = max || groups.length;
for(var i=groups.length-1;i>=0;i--)
if(groups[i].checked) hasChecked++;
return min <= hasChecked && hasChecked <= max;
},
//判断长度
limit : function(len,min, max){
min = min || 0;
max = max || Number.MAX_VALUE;
return min <= len && len <= max;
},
//双字节算2个字符
LenB : function(str){
return str.replace(/[^\x00-\xff]/g,"**").length;
}
}