js正则验证表达式

  1
//上传文件大小验证

$.fn.checkFileTypeAndSize = function (options) {
  2         //默认设置
  3         var defaults = {
  4             allowedExtensions: [],
  5             maxSize: 1024, //单位是KB,默认最大文件尺寸1MB=1024KB
  6             success: function () { },
  7             extensionerror: function () { },
  8             sizeerror: function () { }
  9         };
 10         //合并设置
 11         options = $.extend(defaults, options);
 12         //遍历元素
 13         return this.each(function () {
 14             $(this).on('change', function () {
 15                 //获取文件路径
 16                 var filePath = $(this).val();
 17                 //小写字母的文件路径
 18                 var fileLowerPath = filePath.toLowerCase();
 19                 //获取文件的后缀名
 20                 var extension = fileLowerPath.substring(fileLowerPath.lastIndexOf('.') + 1);
 21                 //判断后缀名是否包含在预先设置的、所允许的后缀名数组中
 22                 if ($.inArray(extension, options.allowedExtensions) == -1) {
 23                     options.extensionerror();
 24                     $(this).focus();
 25                 } else {
 26                     try {
 27                         var size = 0;
 28                         size = $(this)[0].files[0].size;//byte
 29                         size = size / 1024;//kb
 30 //                            size = size / 1024;//mb
 31                         if (size > options.maxSize) {
 32                             options.sizeerror();
 33                         } else {
 34                             options.success();
 35                         }
 36                     } catch (e) {
 37                         alert("错误:" + e);
 38                     }
 39                 }
 40             });
 41         });
 42     };
 43 
 44 
 45  // (查看/修改)图片格式和大小校验
 46     $('#file').checkFileTypeAndSize({//获取<input type="file" id="file">
 47         allowedExtensions: ['bmp','png','gif','jpeg','jpg'],
 48         maxSize: 500,
 49         success: function() {
 50             previewFile();
 51         },
 52         extensionerror: function() {
 53             $.messager.alert('警告','图片文件格式限于bmp,png,gif,jpeg,jpg');
 54             return;
 55         },
 56         sizeerror: function() {
 57             $.messager.alert('警告','最大尺寸500kb');
 58             return;
 59         }
 60     });
 61 
 62 
 63     $.extend($.fn.validatebox.defaults.rules, {
 64 
 65         age: {// 验证年龄
 66             validator: function (value) {
 67                 return /^(?:[1-9][0-9]?|1[01][0-9]|120)$/i.test(value);
 68             },
 69             message: '年龄必须是0到120之间的整数'
 70         },
 71         qq: {// 验证QQ,从10000开始
 72             validator: function (value) {
 73                 return /^[1-9]\d{4,9}$/i.test(value);
 74             },
 75             message: 'QQ号码格式不正确'
 76         },
 77 
 78         email: {
 79             validator: function (value) {
 80                 return /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(value);
 81             },
 82             message: '请输入有效的电子邮件账号(例:abc@126.com)'
 83         },
 84 
 85         integer: {// 验证整数
 86             validator: function (value) {
 87                 return /^(?:[1-9][0-9]?|1[01][0-9]|100)$/i.test(value);
 88             },
 89             message: '请输入0-100的整数'
 90         },
 91 
 92  mobile: {// 验证手机号码
 93             validator: function (value) {
 94                 return /^(13|15|18)\d{9}$/i.test(value);
 95             },
 96             message: '手机号码格式不正确'
 97         },
 98         bankcard: {// 银行卡验证
 99             validator: function (value) {
100                 var f = luhmCheck(value);
101                 return f == true ? true : false;
102             },
103             message: '银行卡卡号格式不正确'
104         }
105     });
106 
107     var aCity = {
108         11: "北京",
109         12: "天津",
110         13: "河北",
111         14: "山西",
112         15: "内蒙古",
113         21: "辽宁",
114         22: "吉林",
115         23: "黑龙江",
116         31: "上海",
117         32: "江苏",
118         33: "浙江",
119         34: "安徽",
120         35: "福建",
121         36: "江西",
122         37: "山东",
123         41: "河南",
124         42: "湖北",
125         43: "湖南",
126         44: "广东",
127         45: "广西",
128         46: "海南",
129         50: "重庆",
130         51: "四川",
131         52: "贵州",
132         53: "云南",
133         54: "西藏",
134         61: "陕西",
135         62: "甘肃",
136         63: "青海",
137         64: "宁夏",
138         65: "新疆",
139         71: "台湾",
140         81: "香港",
141         82: "澳门",
142         91: "国外"
143     }
144     function isCardID(sId) {
145         var iSum = 0;
146         var info = "";
147         if (!/^\d{17}(\d|x)$/i.test(sId)) return "你输入的身份证长度或格式错误";
148         sId = sId.replace(/x$/i, "a");
149         if (aCity[parseInt(sId.substr(0, 2))] == null) return "你的身份证地区非法";
150         sBirthday = sId.substr(6, 4) + "-" + Number(sId.substr(10, 2)) + "-" + Number(sId.substr(12, 2));
151         var d = new Date(sBirthday.replace(/-/g, "/"));
152         if (sBirthday != (d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d.getDate()))return "身份证上的出生日期非法";
153         for (var i = 17; i >= 0; i--) iSum += (Math.pow(2, i) % 11) * parseInt(sId.charAt(17 - i), 11);
154         if (iSum % 11 != 1) return "你输入的身份证号非法";
155         return true;//aCity[parseInt(sId.substr(0,2))]+","+sBirthday+","+(sId.substr(16,1)%2?"男":"女")
156     }
157 
158 //银行卡验证
159     function luhmCheck(bankno) {
160         var lastNum = bankno.substr(bankno.length - 1, 1);//取出最后一位(与luhm进行比较)
161         var first15Num = bankno.substr(0, bankno.length - 1);//前15或18位
162         var newArr = new Array();
163         for (var i = first15Num.length - 1; i > -1; i--) {//前15或18位倒序存进数组
164             newArr.push(first15Num.substr(i, 1));
165         }
166         var arrJiShu = new Array();  //奇数位*2的积 <9
167         var arrJiShu2 = new Array(); //奇数位*2的积 >9
168         var arrOuShu = new Array();  //偶数位数组
169         for (var j = 0; j < newArr.length; j++) {
170             if ((j + 1) % 2 == 1) {//奇数位
171                 if (parseInt(newArr[j]) * 2 < 9)
172                     arrJiShu.push(parseInt(newArr[j]) * 2);
173                 else
174                     arrJiShu2.push(parseInt(newArr[j]) * 2);
175             }
176             else //偶数位
177                 arrOuShu.push(newArr[j]);
178         }
179         var jishu_child1 = new Array();//奇数位*2 >9 的分割之后的数组个位数
180         var jishu_child2 = new Array();//奇数位*2 >9 的分割之后的数组十位数
181         for (var h = 0; h < arrJiShu2.length; h++) {
182             jishu_child1.push(parseInt(arrJiShu2[h]) % 10);
183             jishu_child2.push(parseInt(arrJiShu2[h]) / 10);
184         }
185         var sumJiShu = 0; //奇数位*2 < 9 的数组之和
186         var sumOuShu = 0; //偶数位数组之和
187         var sumJiShuChild1 = 0; //奇数位*2 >9 的分割之后的数组个位数之和
188         var sumJiShuChild2 = 0; //奇数位*2 >9 的分割之后的数组十位数之和
189         var sumTotal = 0;
190         for (var m = 0; m < arrJiShu.length; m++) {
191             sumJiShu = sumJiShu + parseInt(arrJiShu[m]);
192         }
193         for (var n = 0; n < arrOuShu.length; n++) {
194             sumOuShu = sumOuShu + parseInt(arrOuShu[n]);
195         }
196         for (var p = 0; p < jishu_child1.length; p++) {
197             sumJiShuChild1 = sumJiShuChild1 + parseInt(jishu_child1[p]);
198             sumJiShuChild2 = sumJiShuChild2 + parseInt(jishu_child2[p]);
199         }
200         //计算总和
201         sumTotal = parseInt(sumJiShu) + parseInt(sumOuShu) + parseInt(sumJiShuChild1) + parseInt(sumJiShuChild2);
202         //计算Luhm值
203         var k = parseInt(sumTotal) % 10 == 0 ? 10 : parseInt(sumTotal) % 10;
204         var luhm = 10 - k;
205         var my = false;
206         if (lastNum == luhm) {//Luhm验证通过
207             my = true;
208         }
209         else {//银行卡号必须符合Luhm校验
210             my = false;
211         }
212         return my;
213     }

 

posted @ 2017-04-10 14:44  鬼谷神奇  Views(312)  Comments(0)    收藏  举报