浏览 2120 次
锁定老帖子 主题:自己写的验证类【正则表达式】
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-04-14
最后修改:2010-04-11
下面的代码在我上传的包里有,请下载查看 /* version : 1.0 author : huxg date : 2008-10-1 */ var Reg = {}; /************************数字部分***********************/ //数字 Reg["num"] = /^\d+$/; //整数 Reg["int"] = /^(-|\+)?\d+$/; //正整数(用于ID的验证) Reg["int+"] = /^[1-9]+\d*$/; //负整数 Reg["int-"] = /^-\d+$/; Reg.isDouble = function(value,point,sign){ try{ var signstr = "",pointstr = ""; if(sign == "+") signstr = "(\\+)?"; else if(sign == "-") signstr = "-"; else signstr = "(-|\\+)?"; if(isNaN(point))//不限制小数 pointstr = "(\\d+(\\.)\\d+)|(\\d+)"; else{//限制小数 if(point<=0)//无小数 pointstr = "\\d+"; else//有小数 pointstr = "\\d+(\.)\\d{"+point+"}"; } var reg = new RegExp("^"+signstr+"("+pointstr+")$"); return reg.test(value); }catch(e){ throw e; } }; /************************字符部分***********************/ //英文 Reg["en"] = /^[a-zA-Z]+$/; //大写英文 Reg["capture"] = /^[A-Z]+$/; //小写英文 Reg["little"] = /^[a-z]+$/; //英文单词(包括下划线和数字) Reg["word"] = /^\w+$/; //中文 Reg["zh"] = /^[\u4E00-\uFA29]+$/; //中英混合 Reg["zh-en"] = /^[\u4E00-\uFA29a-zA-Z]+$/; Reg["zh-en-num"] = /^[\u4E00-\uFA29a-zA-Z0-9]+$/; Reg["zh-word"] = /^[\u4E00-\uFA29\w]+$/; //英文数字 Reg["en-num"] = /^[a-zA-Z0-9]+$/; //是否为空,包括空字符 Reg["blank"] = /^\s*$/; /************************应用部分***********************/ //邮政编码(中国) Reg["zip"] = /^\d{6}$/; //ip地址 Reg["ip"] = /^[0-2]?[0-5]?[0-5]{1}\.[0-2]?[0-5]?[0-5]{1}\.[0-2]?[0-5]?[0-5]{1}\.[0-2]?[0-5]?[0-5]{1}$/; Reg["qq"] = /^\d{4,11}$/; //mobile Reg["mobile"] = /^1\d{12}$/; //tel Reg["tel"] = /^(\d+\-?\d+)+$/; //邮箱 Reg["email"] = /^\w+@\w+\.(com|cn)(\.(com|cn))?$/; //日期(yyyy-mm-dd) Reg["date-a"] = /^\d{4}-(([0]?[1-9])|10|11|12)(-(([0]?[1-9])|(1[0-9])|(2[0-9])|(3[0-1])))?$/; //到天 Reg["date-d"] = /^\d{4}-(([0]?[1-9])|10|11|12)-(([0]?[1-9])|(1[0-9])|(2[0-9])|(3[0-1]))$/; //到月 Reg["date-m"] = /^\d{4}-(([0]?[1-9])|10|11|12)$/; //到天 Reg["date"] = Reg["date-d"]; //时间(hh:mm:ss || hh:mm) Reg["time-a"] = /^(([0]?[0-9])|(1[0-9])|(2[0-3])):(([0]?[0-9])|([1-5][0-9]))(:(([0]?[0-9])|([1-5][0-9])))?$/; //到秒 Reg["time-s"] = /^(([0]?[0-9])|(1[0-9])|(2[0-3])):(([0]?[0-9])|([1-5][0-9])):(([0]?[0-9])|([1-5][0-9]))$/; //到分 Reg["time-m"] = /^(([0]?[0-9])|(1[0-9])|(2[0-3])):(([0]?[0-9])|([1-5][0-9]))$/; //到秒 Reg["time"] = Reg["time-s"]; //长时间(yyyy-mm-dd hh:mm) 或 (yyyy-mm-dd hh:mm:ss) Reg["times"] = /^\d{4}-(([0]?[1-9])|10|11|12)-(([0]?[1-9])|(1[0-9])|(2[0-9])|(3[0-1]))\x20(([0]?[0-9])|(1[0-9])|(2[0-3])):(([0]?[0-9])|([1-5][0-9]))(:(([0]?[0-9])|([1-5][0-9])))?$/; //只验证格式(做到最近似验证),未对具体的编码验证,只接收1900年到2099年出生的身份证 Reg["idcard"] = /^[1-9]\d{5}(19|20)?\d{2}((0[1-9])|(1[0-2]))((0[1-9])|(1[0-9])|(2[0-9])|(3[0-1]))\d{3}[X0-9]$/; //根据正则检查 Reg.test = function(value,regstr,nullable){ try{ if(nullable){ if(!value || value.length==0) return true; } if(regstr instanceof RegExp) return regstr.test(value); else if(typeof(regstr) == "string"){ var lowreg = regstr.toLowerCase(); if(Reg[lowreg]) return Reg[lowreg].test(value); else{ var r = new RegExp(regstr); return r.test(value); } } }catch(e){ throw e; } }; //精确验证身份证 /*参数部分*/ //身份证号:必选 //生日:可选,传入参数均为字符型,生日为"yyyymmdd"格式即可 //地区编码:可选,可传3位或者6位,3位为前3个验证,6位精确到县 //性别:可选,"M"代表男 "F"代表女 或者1代表男,2代表女 Reg.realIdCard = function(idcard,birth,areacode,sex){ try{ if(!(Reg.test(idcard,"idcard",false)))//精确格式不匹配 return false; //计算校正码并验证 if(idcard.length == 18){ var jcodes =["1","0","X","9","8","7","6","5","4","3","2"]; var cardWi = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1]; var mod = 0; for(var i=0;i<17;i++){ var temp = parseInt(idcard.charAt(i)); mod += temp * cardWi[i]; } mod = mod%11; if(idcard.charAt(17) != jcodes[mod]) return false; } if(birth){//验证生日部分 var birstr = ""; if(idcard.length==18) birstr = idcard.substring(6,14); else if(idcard.length==15) birstr = "19" + idcard.substring(6,12); if(birstr != birth) return false; } if(areacode && areacode.length>0){//验证地区编码部分,3或6位匹配 if(areacode.length == 6){ if(areacode != idcard.substring(0,6)) return false; } else if(areacode.length == 3){ if(areacode != idcard.substring(0,3)) return false; } } if(sex){//验证性别部分,"M"代表男 "F"代表女 或者1代表男,2代表女 var sexnum = ""; if(idcard.length==18) sexnum = idcard.substring(14,17); else if(idcard.length==15) sexnum = idcard.substring(11,14); var sexint = parseInt(sexnum); var sexmod = sexint%2; if((sex == "M" || sex == 1) && sexmod == 0) return false; if((sex == "F" || sex == 2 ) && sexmod == 1) return false; } return true; }catch(e){ throw e; } }; 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |