javascript 常用验证函数总结
/**
*2010-7-13
*贺臣
*情缘
*js各种表单数据验证
*/
/**************************************************************************************/
/*************************************数字的验证*****************************************/
/**************************************************************************************/
/**
*检查输入的一串字符是否全部是数字
*输入:str字符串
*返回:true或flase;true表示为数字
*/
functioncheckNum(str){
returnstr.match(/\D/)==null;
}
/**
*检查输入的一串字符是否为小数
*输入:str字符串
*返回:true或flase;true表示为小数
*/
functioncheckDecimal(str){
if(str.match(/^-?\d+(\.\d+)?$/g)==null){
returnfalse;
}
else{
returntrue;
}
}
/**
*检查输入的一串字符是否为整型数据
*输入:str字符串
*返回:true或flase;true表示为小数
*/
functioncheckInteger(str){
if(str.match(/^[-+]?\d*$/)==null){
returnfalse;
}
else{
returntrue;
}
}
/**************************************************************************************/
/*************************************字符的验证*****************************************/
/**************************************************************************************/
/**
*检查输入的一串字符是否是字符
*输入:str字符串
*返回:true或flase;true表示为全部为字符不包含汉字
*/
functioncheckStr(str){
if(/[^\x00-\xff]/g.test(str)){
returnfalse;
}
else{
returntrue;
}
}
/**
*检查输入的一串字符是否包含汉字
*输入:str字符串
*返回:true或flase;true表示包含汉字
*/
functioncheckChinese(str){
if(escape(str).indexOf("%u")!=-1){
returntrue;
}
else{
returnfalse;
}
}
/**
*检查输入的邮箱格式是否正确
*输入:str字符串
*返回:true或flase;true表示格式正确
*/
functioncheckEmail(str){
if(str.match(/[A-Za-z0-9_-]+[@](\S*)(net|com|cn|org|cc|tv|[0-9]{1,3})(\S*)/g)==null){
returnfalse;
}
else{
returntrue;
}
}
/**
*检查输入的手机号码格式是否正确
*输入:str字符串
*返回:true或flase;true表示格式正确
*/
functioncheckMobilePhone(str){
if(str.match(/^(?:13\d|15[89])-?\d{5}(\d{3}|\*{3})$/)==null){
returnfalse;
}
else{
returntrue;
}
}
/**
*检查输入的固定电话号码是否正确
*输入:str字符串
*返回:true或flase;true表示格式正确
*/
functioncheckTelephone(str){
if(str.match(/^(([0\+]\d{2,3}-)?(0\d{2,3})-)(\d{7,8})(-(\d{3,}))?$/)==null){
returnfalse;
}
else{
returntrue;
}
}
/**
*检查QQ的格式是否正确
*输入:str字符串
*返回:true或flase;true表示格式正确
*/
functioncheckQQ(str){
if(str.match(/^\d{5,10}$/)==null){
returnfalse;
}
else{
returntrue;
}
}
/**
*检查输入的身份证号是否正确
*输入:str字符串
*返回:true或flase;true表示格式正确
*/
functioncheckCard(str){
//15位数身份证正则表达式
vararg1=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;
//18位数身份证正则表达式
vararg2=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[A-Z])$/;
if(str.match(arg1)==null&&str.match(arg2)==null){
returnfalse;
}
else{
returntrue;
}
}
/**
*检查输入的IP地址是否正确
*输入:str字符串
*返回:true或flase;true表示格式正确
*/
functioncheckIP(str){
vararg=/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/;
if(str.match(arg)==null){
returnfalse;
}
else{
returntrue;
}
}
/**
*检查输入的URL地址是否正确
*输入:str字符串
*返回:true或flase;true表示格式正确
*/
functioncheckURL(str){
if(str.match(/(http[s]?|ftp):\/\/[^\/\.]+?\..+\w$/i)==null){
returnfalse
}
else{
returntrue;
}
}
/**
*检查输入的字符是否具有特殊字符
*输入:str字符串
*返回:true或flase;true表示包含特殊字符
*主要用于注册信息的时候验证
*/
functioncheckQuote(str){
varitems=newArray("~","`","!","@","#","$","%","^","&","*","{","}","[","]","(",")");
items.push(":",";","'","|","\\","<",">","?","/","<<",">>","||","//");
items.push("admin","administrators","administrator","管理员","系统管理员");
items.push("select","delete","update","insert","create","drop","alter","trancate");
str=str.toLowerCase();
for(vari=0;i<items.length;i++){
if(str.indexOf(items[i])>=0){
returntrue;
}
}
returnfalse;
}
/**************************************************************************************/
/*************************************时间的验证*****************************************/
/**************************************************************************************/
/**
*检查日期格式是否正确
*输入:str字符串
*返回:true或flase;true表示格式正确
*注意:此处不能验证中文日期格式
*验证短日期(2007-06-05)
*/
functioncheckDate(str){
//varvalue=str.match(/((^((1[8-9]\d{2})|([2-9]\d{3}))(-)(10|12|0?[13578])(-)(3[01]|[12][0-9]|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))(-)(11|0?[469])(-)(30|[12][0-9]|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))(-)(0?2)(-)(2[0-8]|1[0-9]|0?[1-9])$)|(^([2468][048]00)(-)(0?2)(-)(29)$)|(^([3579][26]00)(-)(0?2)(-)(29)$)|(^([1][89][0][48])(-)(0?2)(-)(29)$)|(^([2-9][0-9][0][48])(-)(0?2)(-)(29)$)|(^([1][89][2468][048])(-)(0?2)(-)(29)$)|(^([2-9][0-9][2468][048])(-)(0?2)(-)(29)$)|(^([1][89][13579][26])(-)(0?2)(-)(29)$)|(^([2-9][0-9][13579][26])(-)(0?2)(-)(29)$))/);
varvalue=str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
if(value==null){
returnfalse;
}
else{
vardate=newDate(value[1],value[3]-1,value[4]);
return(date.getFullYear()==value[1]&&(date.getMonth()+1)==value[3]&&date.getDate()==value[4]);
}
}
/**
*检查时间格式是否正确
*输入:str字符串
*返回:true或flase;true表示格式正确
*验证时间(10:57:10)
*/
functioncheckTime(str){
varvalue=str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/)
if(value==null){
returnfalse;
}
else{
if(value[1]>24||value[3]>60||value[4]>60){
returnfalse
}
else{
returntrue;
}
}
}
/**
*检查全日期时间格式是否正确
*输入:str字符串
*返回:true或flase;true表示格式正确
*(2007-06-0510:57:10)
*/
functioncheckFullTime(str){
//varvalue=str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})(\d{1,2}):(\d{1,2}):(\d{1,2})$/);
varvalue=str.match(/^(?:19|20)[0-9][0-9]-(?:(?:0[1-9])|(?:1[0-2]))-(?:(?:[0-2][1-9])|(?:[1-3][0-1]))(?:(?:[0-2][0-3])|(?:[0-1][0-9])):[0-5][0-9]:[0-5][0-9]$/);
if(value==null){
returnfalse;
}
else{
//vardate=newDate(checkFullTime[1],checkFullTime[3]-1,checkFullTime[4],checkFullTime[5],checkFullTime[6],checkFullTime[7]);
//return(date.getFullYear()==value[1]&&(date.getMonth()+1)==value[3]&&date.getDate()==value[4]&&date.getHours()==value[5]&&date.getMinutes()==value[6]&&date.getSeconds()==value[7]);
returntrue;
}
}
/**************************************************************************************/
/************************************身份证号码的验证*************************************/
/**************************************************************************************/
/**
*身份证15位编码规则:ddddddyymmddxxp
*dddddd:地区码
*yymmdd:出生年月日
*xx:顺序类编码,无法确定
*p:性别,奇数为男,偶数为女
*<p/>
*身份证18位编码规则:ddddddyyyymmddxxxy
*dddddd:地区码
*yyyymmdd:出生年月日
*xxx:顺序类编码,无法确定,奇数为男,偶数为女
*y:校验码,该位数值可通过前17位计算获得
*<p/>
*18位号码加权因子为(从右到左)Wi=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1]
*验证位Y=[1,0,10,9,8,7,6,5,4,3,2]
*校验位计算公式:Y_P=mod(∑(Ai×Wi),11)
*i为身份证号码从右往左数的2...18位;Y_P为脚丫校验码所在校验码数组位置
*
*/
varWi=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1];//加权因子
varValideCode=[1,0,10,9,8,7,6,5,4,3,2];//身份证验证位值.10代表X
functionIdCardValidate(idCard){
idCard=trim(idCard.replace(//g,""));
if(idCard.length==15){
returnisValidityBrithBy15IdCard(idCard);
}
else
if(idCard.length==18){
vara_idCard=idCard.split("");//得到身份证数组
if(isValidityBrithBy18IdCard(idCard)&&isTrueValidateCodeBy18IdCard(a_idCard)){
returntrue;
}
else{
returnfalse;
}
}
else{
returnfalse;
}
}
/**
*判断身份证号码为18位时最后的验证位是否正确
*@parama_idCard身份证号码数组
*@return
*/
functionisTrueValidateCodeBy18IdCard(a_idCard){
varsum=0;//声明加权求和变量
if(a_idCard[17].toLowerCase()=='x'){
a_idCard[17]=10;//将最后位为x的验证码替换为10方便后续操作
}
for(vari=0;i<17;i++){
sum+=Wi[i]*a_idCard[i];//加权求和
}
valCodePosition=sum%11;//得到验证码所位置
if(a_idCard[17]==ValideCode[valCodePosition]){
returntrue;
}
else{
returnfalse;
}
}
/**
*通过身份证判断是男是女
*@paramidCard15/18位身份证号码
*@return'female'-女、'male'-男
*/
functionmaleOrFemalByIdCard(idCard){
idCard=trim(idCard.replace(//g,""));//对身份证号码做处理。包括字符间有空格。
if(idCard.length==15){
if(idCard.substring(14,15)%2==0){
return'female';
}
else{
return'male';
}
}
else
if(idCard.length==18){
if(idCard.substring(14,17)%2==0){
return'female';
}
else{
return'male';
}
}
else{
returnnull;
}
}
/**
*验证18位数身份证号码中的生日是否是有效生日
*@paramidCard18位书身份证字符串
*@return
*/
functionisValidityBrithBy18IdCard(idCard18){
varyear=idCard18.substring(6,10);
varmonth=idCard18.substring(10,12);
varday=idCard18.substring(12,14);
vartemp_date=newDate(year,parseFloat(month)-1,parseFloat(day));
//这里用getFullYear()获取年份,避免千年虫问题
if(temp_date.getFullYear()!=parseFloat(year)||
temp_date.getMonth()!=parseFloat(month)-1||
temp_date.getDate()!=parseFloat(day)){
returnfalse;
}
else{
returntrue;
}
}
/**
*验证15位数身份证号码中的生日是否是有效生日
*@paramidCard1515位书身份证字符串
*@return
*/
functionisValidityBrithBy15IdCard(idCard15){
varyear=idCard15.substring(6,8);
varmonth=idCard15.substring(8,10);
varday=idCard15.substring(10,12);
vartemp_date=newDate(year,parseFloat(month)-1,parseFloat(day));
//对于老身份证中的你年龄则不需考虑千年虫问题而使用getYear()方法
if(temp_date.getYear()!=parseFloat(year)||
temp_date.getMonth()!=parseFloat(month)-1||
temp_date.getDate()!=parseFloat(day)){
returnfalse;
}
else{
returntrue;
}
}
//去掉字符串头尾空格
functiontrim(str){
returnstr.replace(/(^\s*)|(\s*$)/g,"");
}
以上就是本文的全部内容,了解更多JavaScript的语法,大家可以查看:《JavaScript参考教程》、《JavaScript代码风格指南》,也希望大家多多支持毛票票。