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代码风格指南》,也希望大家多多支持毛票票。