js 的一些验证
2008-09-02 07:06
211 查看
// 验证类
var Validator={
//验证Email格式,s为Email
isEmail:function(s){
return this.test(s,'^[-!#$%&/'*+//./0-9=?A-Z^_`a-z{|}~]+@[-!#$%&/'*+///0-9=?A-Z^_`a-z{|}~]+/.[-!#$%&/'*+//./0-9=?A-Z^_`a-z{|}~]+$');
},
isAbsUrl:function(s){
return this.test(s,'^(news|telnet|nttp|file|http|ftp|https)://[-A-Za-z0-9//.]+///?.*$');
},
isSize:function(s){//判断大小象素或百分比
return this.test(s,'^[0-9]+(px|%)?$');
},
isId:function(s){//判断ID,只允许输入字母、数字、下划线
return this.test(s,'^[A-Za-z_]([A-Za-z0-9_])*$');
},
isEmpty:function(s){//为空则返回true;
var nl,i;
//S如果是一个对象,则取对象节点名称,如果对象节点名等于Select,则表示为选择框对象
//如果selectedIndex<1则没有选择对象.
if(s.nodeName=='SELECT' && s.selectedIndex < 1)
return true;
//s如果是对象,则取对象类型,如果是checkbox复选框,判断是否已选择.
if(s.type=='checkbox' && !s.checked)
return true;
if (s.type == 'radio') {//判断单选框
for (i=0, nl = s.form.elements; i<nl.length; i++) {
if (nl[i].type == "radio" && nl[i].name == s.name && nl[i].checked)
return false;
}
return true;
}
return new RegExp('^//s*$').test(s.nodeType==1?s.value:s);
},
isNumber:function(s,d){//判断是否为数字类型
return !isNaN(s.nodeType==1?s.value:s) && (!d || !this.test(s,'^-?[0-9]*//.[0-9]*$'));
},
isSafeSqlString:function(s){
return !s.match('^[;]*$');
},
isTime:function(s){//判断时间格式如:10:10:10注:一定要去掉空格
var a=this.match(s,/^(/d{1,2})(:)?(/d{1,2})/2(/d{1,2})$/);
if(a == null)
return false;
if(a[1]>24 || a[3]>60 || a[4]>60)
return false;
return true;
},
isShortDateTime:function(s){//判断短形日期如:2008-08-08或2008/08/08注:一定要去掉空格
var r=this.match(s,/^(/d{1,4})(-|//)(/d{1,2})/2(/d{1,2})$/);
if(r==null)
return false;
var d=new Date(r[1],r[3]-1,r[4]);
return (d.getFullYear()==r[1] && (d.getMonth()+1)==r[3] && d.getDate()==r[4]);
},
isLongDateTime:function(s){//判断长日期类型如:2008-08-08 08:08:08 或2008/08/08 08:08:08注:一定要去掉空格,否则返回false
var reg=/^(/d{1,4})(-|//)(/d{1,2})/2(/d{1,2}) (/d{1,2}):(/d{1,2}):(/d{1,2})$/;
var r=this.match(s,reg);
if(r==null)
return false;
var d=new Date(r[1],r[3]-1,r[4],r[5],r[6],r[7]);
return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]&&d.getHours()==r[5]&&d.getMinutes()==r[6]&&d.getSeconds()==r[7]);
},
checkIdCard:function(idcard){//检查身份证的合法性,
idcard=idcard.nodeType==1?idcard.value:idcard;
var Errors=new Array("验证通过!","身份证号码位数不对!","身份证号码出生日期超出范围或含有非法字符!","身份证号码校验错误!","身份证地区非法!");
var area={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"}
var idcard,Y,JYM;
var S,M;
var idcard_array = new Array();
idcard_array = idcard.split("");
if(area[parseInt(idcard.substr(0,2))]==null) return Errors[4];
switch(idcard.length){
case 15:
if ((parseInt(idcard.substr(6,2))+1900) % 4 == 0 || ((parseInt(idcard.substr(6,2))+1900) % 100 == 0 && (parseInt(idcard.substr(6,2))+1900) % 4 == 0 )){
ereg = /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/;//测试出生日期的合法性
}
else{
ereg = /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/;//测试出生日期的合法性
}
if(ereg.test(idcard))
return Errors[0];//
else
return Errors[2];
break;
case 18:
if ( parseInt(idcard.substr(6,4)) % 4 == 0 || (parseInt(idcard.substr(6,4)) % 100 == 0 && parseInt(idcard.substr(6,4))%4 == 0 )){
ereg = /^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/;//闰年出生日期的合法性正则表达式
}
else{
ereg = /^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/;//平年出生日期的合法性正则表达式
}
if(ereg.test(idcard)){
S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7 + (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9 + (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10 + (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5 + (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8 + (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4 + (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2 + parseInt(idcard_array[7]) * 1 + parseInt(idcard_array[8]) * 6 + parseInt(idcard_array[9]) * 3 ;
Y = S % 11;
M = "F";
JYM = "10X98765432";
M = JYM.substr(Y,1);
if(M == idcard_array[17])
return Errors[0];
else
return Errors[3];
}
else
return Errors[2];
break;
default:
return Errors[1];
break;
}
},
test:function(s,p){//s要验证的字符串,p正则表达式
//如果为对象而取对象值,否则就取字符串
s = s.nodeType == 1 ? s.value : s;
return s=='' || new RegExp(p).test(s);
},
match:function(s,p){
s=s.nodeType==1?s.value : s;
return s=='' || s.match(p);
}
};
var Validator={
//验证Email格式,s为Email
isEmail:function(s){
return this.test(s,'^[-!#$%&/'*+//./0-9=?A-Z^_`a-z{|}~]+@[-!#$%&/'*+///0-9=?A-Z^_`a-z{|}~]+/.[-!#$%&/'*+//./0-9=?A-Z^_`a-z{|}~]+$');
},
isAbsUrl:function(s){
return this.test(s,'^(news|telnet|nttp|file|http|ftp|https)://[-A-Za-z0-9//.]+///?.*$');
},
isSize:function(s){//判断大小象素或百分比
return this.test(s,'^[0-9]+(px|%)?$');
},
isId:function(s){//判断ID,只允许输入字母、数字、下划线
return this.test(s,'^[A-Za-z_]([A-Za-z0-9_])*$');
},
isEmpty:function(s){//为空则返回true;
var nl,i;
//S如果是一个对象,则取对象节点名称,如果对象节点名等于Select,则表示为选择框对象
//如果selectedIndex<1则没有选择对象.
if(s.nodeName=='SELECT' && s.selectedIndex < 1)
return true;
//s如果是对象,则取对象类型,如果是checkbox复选框,判断是否已选择.
if(s.type=='checkbox' && !s.checked)
return true;
if (s.type == 'radio') {//判断单选框
for (i=0, nl = s.form.elements; i<nl.length; i++) {
if (nl[i].type == "radio" && nl[i].name == s.name && nl[i].checked)
return false;
}
return true;
}
return new RegExp('^//s*$').test(s.nodeType==1?s.value:s);
},
isNumber:function(s,d){//判断是否为数字类型
return !isNaN(s.nodeType==1?s.value:s) && (!d || !this.test(s,'^-?[0-9]*//.[0-9]*$'));
},
isSafeSqlString:function(s){
return !s.match('^[;]*$');
},
isTime:function(s){//判断时间格式如:10:10:10注:一定要去掉空格
var a=this.match(s,/^(/d{1,2})(:)?(/d{1,2})/2(/d{1,2})$/);
if(a == null)
return false;
if(a[1]>24 || a[3]>60 || a[4]>60)
return false;
return true;
},
isShortDateTime:function(s){//判断短形日期如:2008-08-08或2008/08/08注:一定要去掉空格
var r=this.match(s,/^(/d{1,4})(-|//)(/d{1,2})/2(/d{1,2})$/);
if(r==null)
return false;
var d=new Date(r[1],r[3]-1,r[4]);
return (d.getFullYear()==r[1] && (d.getMonth()+1)==r[3] && d.getDate()==r[4]);
},
isLongDateTime:function(s){//判断长日期类型如:2008-08-08 08:08:08 或2008/08/08 08:08:08注:一定要去掉空格,否则返回false
var reg=/^(/d{1,4})(-|//)(/d{1,2})/2(/d{1,2}) (/d{1,2}):(/d{1,2}):(/d{1,2})$/;
var r=this.match(s,reg);
if(r==null)
return false;
var d=new Date(r[1],r[3]-1,r[4],r[5],r[6],r[7]);
return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]&&d.getHours()==r[5]&&d.getMinutes()==r[6]&&d.getSeconds()==r[7]);
},
checkIdCard:function(idcard){//检查身份证的合法性,
idcard=idcard.nodeType==1?idcard.value:idcard;
var Errors=new Array("验证通过!","身份证号码位数不对!","身份证号码出生日期超出范围或含有非法字符!","身份证号码校验错误!","身份证地区非法!");
var area={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外"}
var idcard,Y,JYM;
var S,M;
var idcard_array = new Array();
idcard_array = idcard.split("");
if(area[parseInt(idcard.substr(0,2))]==null) return Errors[4];
switch(idcard.length){
case 15:
if ((parseInt(idcard.substr(6,2))+1900) % 4 == 0 || ((parseInt(idcard.substr(6,2))+1900) % 100 == 0 && (parseInt(idcard.substr(6,2))+1900) % 4 == 0 )){
ereg = /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/;//测试出生日期的合法性
}
else{
ereg = /^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/;//测试出生日期的合法性
}
if(ereg.test(idcard))
return Errors[0];//
else
return Errors[2];
break;
case 18:
if ( parseInt(idcard.substr(6,4)) % 4 == 0 || (parseInt(idcard.substr(6,4)) % 100 == 0 && parseInt(idcard.substr(6,4))%4 == 0 )){
ereg = /^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/;//闰年出生日期的合法性正则表达式
}
else{
ereg = /^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/;//平年出生日期的合法性正则表达式
}
if(ereg.test(idcard)){
S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7 + (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9 + (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10 + (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5 + (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8 + (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4 + (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2 + parseInt(idcard_array[7]) * 1 + parseInt(idcard_array[8]) * 6 + parseInt(idcard_array[9]) * 3 ;
Y = S % 11;
M = "F";
JYM = "10X98765432";
M = JYM.substr(Y,1);
if(M == idcard_array[17])
return Errors[0];
else
return Errors[3];
}
else
return Errors[2];
break;
default:
return Errors[1];
break;
}
},
test:function(s,p){//s要验证的字符串,p正则表达式
//如果为对象而取对象值,否则就取字符串
s = s.nodeType == 1 ? s.value : s;
return s=='' || new RegExp(p).test(s);
},
match:function(s,p){
s=s.nodeType==1?s.value : s;
return s=='' || s.match(p);
}
};
相关文章推荐
- JS的一些常用验证[百度文库]
- 利用js实现注册问题中的一些验证
- 一些经常用的JS表单验证
- js验证表单(都是一些经常要用到的)
- JS常用的一些判断输入验证
- js事件集合,以及一些js验证 以及js特效
- 一些前台密码验证JS
- 一些常用的JS验证
- js中验证用的一些正则表达式的积累
- JS的一些常用验证[百度文库]
- 一些正则验证-JS
- JS模式:策略模式,感觉就是一个闭包存储信息,然后是加一些验证方法--还看了老半天
- 身份证号输入验证js代码 支持输入"x"大小写 现已解决一些身份证号不兼容问题
- 一些比较好的Js正则验证
- js 验证函数 和 一些 常用函数
- JS常用的一些判断输入验证
- 转 一些关于js与jquery的数字类型验证正则表达式代码
- JS(一些简单实用的验证)
- 开博第一篇-有关js的一些常用的验证代码
- 分享我常用的一些JS验证和函数