//校验器
var validate = {
//校验当前运行环境是否是手机端
isWap:function(){
var sUserAgent= navigator.userAgent.toLowerCase();
var bIsIpad= sUserAgent.match(/ipad/i) == "ipad";
var bIsIphoneOs= sUserAgent.match(/iphone os/i) == "iphone os";
var bIsMidp= sUserAgent.match(/midp/i) == "midp";
var bIsUc7= sUserAgent.match(/rv:1.2.3.4/i) == "rv:1.2.3.4";
var bIsUc= sUserAgent.match(/ucweb/i) == "ucweb";
var bIsAndroid= sUserAgent.match(/android/i) == "android";
var bIsCE= sUserAgent.match(/windows ce/i) == "windows ce";
var bIsWM= sUserAgent.match(/windows mobile/i) == "windows mobile";
if (bIsIpad || bIsIphoneOs || bIsMidp || bIsUc7 || bIsUc || bIsAndroid || bIsCE || bIsWM) {
return true;//是手机端
} else {
return false;//不是手机端
}
},
//身份证校验
identityCodeValid:function(code){
var city={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 pass= true;
if (!code || !/^[1-9]\d{5}((1[89]|20)\d{2})(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dx]$/i.test(code)) {
console.log("身份证号格式错误");
pass = false;
}else if(!city[code.substr(0,2)]){
console.log("地址编码错误");
pass = false;
}else{
//18位身份证需要验证最后一位校验位
if(code.length == 18){
code = code.split('');
//∑(ai×Wi)(mod 11)
//加权因子
var factor = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ];
//校验位
var parity = [ 1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2 ];
var sum = 0;
var ai = 0;
var wi = 0;
for (var i = 0; i < 17; i++)
{
ai = code[i];
wi = factor[i];
sum += ai * wi;
}
var last = parity[sum % 11];
if(parity[sum % 11] != code[17].toUpperCase()){
console.log("校验位错误");
pass =false;
}
}
}
return pass;//true 表示校验通过;false 表示校验失败
},
//检查生日是否正确,如果正确则返回正确的生日
checkBirthday : function(card)
{
var len = card.length;
//身份证15位时,次序为省(3位)市(3位)年(2位)月(2位)日(2位)校验位(3位),皆为数字
if(len == '15')
{
var re_fifteen = /^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/;
var arr_data = card.match(re_fifteen);
var year = arr_data[2];
var month = arr_data[3];
var day = arr_data[4];
var birthday = new Date('19'+year+'-'+month+'-'+day);
return verifyBirthday('19'+year+"-"+month+"-"+day);
}
//身份证18位时,次序为省(3位)市(3位)年(4位)月(2位)日(2位)校验位(4位),校验位末尾可能为X
if(len == '18')
{
var re_eighteen = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/;
var arr_data = card.match(re_eighteen);
var year = arr_data[2];
var month = arr_data[3];
var day = arr_data[4];
var birthday = new Date(year+'-'+month+'-'+day);
return (year+"-"+month+"-"+day);
}
return false;
},//校验姓名
isName:function(value){
// if(value.match(/^([\u4e00-\u9fa5]|[0-9a-zA-Z]|[.])+$/)){
//if(value.match(/^([\u4e00-\u9fa5]{2,10})+$/)){
return true;
//}
//else {return false; }
},//校验英文
isEnName:function(value){
if(value.match(/^([0-9a-zA-Z]|[.]){1,30}$/)){
return true;
}else{
return false;
}
},//校验数字
isNum:function(s){
var patrn=/^[0-9]{1,20}$/;
if (!patrn.exec(s)) return false
return true ;
},//校验护照
isPassport:function(value){
// /(P\d{7})|(G\d{8})/
/*if(value.match(/^([0-9a-zA-Z]{8}|[0-9a-zA-Z]{9})$/)){*/
return true;
/* }else{
return false;
}*/
},//校验地址
isAddress:function(value){
if(value.match(/^([0-9a-zA-Z]|[\u4e00-\u9fa5]|[-.\(\)]){2,100}$/)){
return true;
}else{
return false;
} },//校验手机号
isMobile:function(value){
if(value == ''){
return false;
}else if(value.trim().match(/^1[3|4|5|6|7|8|9][0-9]\d{8}$/)){
return true;
}else{
return false;
}
},
//校验邮箱
isEmail:function(email){
if(email.match(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/)){
return true;
}else{
return false;
}
},//检查数组元素是否有重复,true表示重复;false表示不重复
validateRep:function(arr){
return /(\x0f[^\x0f]+)\x0f[\s\S]*\1/.test("\x0f"+arr.join("\x0f\x0f") +"\x0f");
},isImage:function(imgPath){
imgPath="abc123"+imgPath.substring(imgPath.lastIndexOf("."),imgPath.length);
return validate.isNotNull(imgPath)&&/^.*[^a][^b][^c]\.(?:png|jpg|bmp|gif|jpeg)$/.test(imgPath.toLocaleLowerCase());
}, isMoney:function(money){
var reg= /^-?\d+\.?\d{0,2}$/;
return reg.test(money);
},isUndefined:function(obj){
return "undefined" == typeof obj||obj==undefined;
},isNotNull:function(value){
return value!=null&&$.trim(value)!="";
},isNull:function(value){
return !validate.isNotNull(value);
},isURL:function (str){
return!!str.trim().match(/(((^https?:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)$/g);
},isInt:function(num){
num=$.trim(num);
if(num=="-"){
return true;
}
var reg=/^-?[0-9]\d*$/;
return reg.test(num);
}
}
//判定是否是移动端
function isMobile() {
var sUserAgent = navigator.userAgent.toLowerCase();
var bIsIpad = sUserAgent.match(/ipad/i) == "ipad";
var bIsIphoneOs = sUserAgent.match(/iphone os/i) == "iphone os";
var bIsMidp = sUserAgent.match(/midp/i) == "midp";
var bIsUc7 = sUserAgent.match(/rv:1.2.3.4/i) == "rv:1.2.3.4";
var bIsUc = sUserAgent.match(/ucweb/i) == "ucweb";
var bIsAndroid = sUserAgent.match(/android/i) == "android";
var bIsCE = sUserAgent.match(/windows ce/i) == "windows ce";
var bIsWM = sUserAgent.match(/windows mobile/i) == "windows mobile";
if (bIsIpad || bIsIphoneOs || bIsMidp || bIsUc7 || bIsUc || bIsAndroid
|| bIsCE || bIsWM) {
return true;
} else {
return false;
}
}
//判定是否是微信浏览器
function isWeixin(){
var ua = window.navigator.userAgent.toLowerCase();
if(ua.match(/MicroMessenger/i) == 'micromessenger')
return true;
else
return false;
}
/**
* cookie 操作
*/
var _cookie = {
//获取cookie生命周期,i=1表示1天;
getExpTime:function(i){
var exp = new Date();
return new Date().getTime() + i*24*60*60*1000;
},
//设值
set:function(name,value,expTime){
var exp = new Date();
exp.setTime(expTime);
document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
},
//获取值
get:function(name){
var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
if(arr != null) return unescape(arr[2]); return null;
},
//删除指定值
del:function(name){
var exp = new Date();
exp.setTime(exp.getTime() - 1);
var cval=_cookie.get(name);
if(cval!=null) {document.cookie= name + "="+cval+";expires="+exp.toGMTString()};
}
}
var bindUtil={
bindOnlyInputInt:function (obj,funObj){//只能输入整数
var tempMoneyValue=validate.isInt($(obj).val())?$(obj).val():"";
$(obj).bind("input propertychange",function() {
if(!validate.isInt(this.value)){
if(!validate.isNotNull(this.value)&&this.value.length==0){
tempMoneyValue="";
}else{
this.value=tempMoneyValue;
}
}else{
tempMoneyValue=$.trim(this.value);
if(this.value.length!=tempMoneyValue.length){
this.value=tempMoneyValue;
}
}
var thisObj=this;
if(!validate.isUndefined(funObj)){
funObj(thisObj);
}
});
},
bindOnlyInputMoney: function (inputObj,funObj){//只能输入金额
var tempMoneyValue=validate.isMoney($(inputObj).val())?$(inputObj).val():"";;
$(inputObj).bind("input propertychange",function() {
if(!validate.isMoney(this.value)){
if(!validate.isNotNull(this.value)&&this.value.length==0){
tempMoneyValue=this.value;
}else{
this.value=tempMoneyValue;
}
}else{
tempMoneyValue=$.trim(this.value);
if(tempMoneyValue.length!=this.value.length){
this.value=tempMoneyValue;
}
}
var thisObj=this;
if(!validate.isUndefined(funObj)){
funObj(thisObj);
}
});
}
}

js 参数校验器的更多相关文章

  1. 【spring】-- jsr303参数校验器

    一.为什么要进行参数校验? 当我们在服务端控制器接受前台数据时,肯定首先要对数据进行参数验证,判断参数是否为空?是否为电话号码?是否为邮箱格式?等等. 这里有个问题要注意: 前端代码一般上会对这些数据 ...

  2. 后端参数校验器v1.0(调用一个方法校验所有参数并得到校验结果,且包括错误原因)

    一:介绍 在写后端时,面对多个参数,比如手机号码.密码等我们常常需要写验证逻辑,当需要验证的参数较多的时候我们会需要写很多的判断语句,这就造成了大量的代码冗余.因此我开发了一套参数验证器,只需要调用参 ...

  3. 【参数校验】 自定义校验器 (实现ConstraintValidator)

    日常工作中写接口时,往往需要校验前端传来的枚举状态码,例如"1","2"等等, 这里使用java 303规范的参数校验框架封装一个自定义参数校验器: /** * ...

  4. eggjs的参数校验模块egg-validate的使用和进一步定制化升级

    简单讲一下这个egg-validate egg-validate是基于parameter的. 安装 npm install --save egg-validate 启用 // config/plugi ...

  5. Python 参数校验的进化

    Python 函数参数魔法 事情的起因是感觉目前项目中的参数校验方法写的太简单了,很多时候需要在server层再if else处理,于是就动手准备写一个好用一点的,可以自定义校验参数规则的参数校验器, ...

  6. SpringBoot 参数校验

    一.添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...

  7. SpringBoot 如何进行参数校验,老鸟们都这么玩的!

    大家好,我是飘渺. 前几天写了一篇 SpringBoot如何统一后端返回格式?老鸟们都是这样玩的! 阅读效果还不错,而且被很多号主都转载过,今天我们继续第二篇,来聊聊在SprinBoot中如何集成参数 ...

  8. SpringMVC【校验器、统一处理异常、RESTful、拦截器】

    前言 本博文主要讲解的知识点如下: 校验器 统一处理异常 RESTful 拦截器 Validation 在我们的Struts2中,我们是继承ActionSupport来实现校验的...它有两种方式来实 ...

  9. Java Bean Validation(参数校验) 最佳实践

    转载来自:http://www.cnblogs.com 参数校验是我们程序开发中必不可少的过程.用户在前端页面上填写表单时,前端js程序会校验参数的合法性,当数据到了后端,为了防止恶意操作,保持程序的 ...

随机推荐

  1. 一种机制,与js类似

    我们知道,当两个条件进行逻辑与操作的时候,其中任何一个条件为假,则表达式的结果为假.所以,遇到(A 且 B)这种表达式,如果A为假的话,B是不是真假都无所谓了,当遇到一个假条件的时候,程序也就没有必要 ...

  2. 不只是内存分析工具~valgrind

    体系结构:原理介绍·参考好文:应用 Valgrind 发现 Linux 程序的内存问题 简单组一个摘要: Valgrind包括如下一些工具: Memcheck.这是valgrind应用最广泛的工具,一 ...

  3. off charging mode flow

    /system/core/init/init.cpp ..... ..... ..... int main(int argc, char** argv) { ..... ..... ..... // ...

  4. 终于遇到了传说的ie 6 img 3px的bug

    最近在做一个网站,基本上已经算完成,就开始完善细节部分了. IE6可能是微软最为YD 的一款浏览器了吧,至今还没有退出历史的舞台,尽管google都宣布不在支持它了. 因为该死的ie6,虽死但是牢牢地 ...

  5. chanme的博客搬家了!

    一直以来都想自己租一台服务器,买个域名做一个自己的博客,但是由于时间和知识的关系,以前还不太知道怎么搭一个博客.终于我在上个礼拜成功的迈出了建站的第一步,然后陆陆续续的也将一些后续的步骤做好了.所以今 ...

  6. (31)C#时间

    一. DateTime dt = DateTime.Now 对象 1.获取当前时间 Console.WriteLine(dt.Year+"年"); //当前年份 Console.W ...

  7. springboot微服务的简单小结

    springboot微服务的简单小结 近来公司用springboot微服务,所以小结一下. 基础: 什么是SpingBoot微服务? 如何创建SpringBoot微服务? 如何管理和完善SpringB ...

  8. HDOJ 3516 Tree Construction 四边形优化dp

    原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=3516 题意: 大概就是给你个下凸包的左侧,然后让你用平行于坐标轴的线段构造一棵树,并且这棵树的总曼哈顿 ...

  9. 每天一个liunx命令3之awk实现文本文件的抓取

    =============================================================================grep -h -s -E 'HUAWEI_9 ...

  10. 解决方案:An error was encountered while running(Domain=FBSOpenApplicationErrorDomain, Code=4)

    iOS simulator出现问题,提示: An error was encountered while running (Domain = FBSOpenApplicationErrorDomain ...