前端攻城=>`验证规则系列`


忙碌了一周的时间, 终于有个愉快的周末可以放松一下了,昨天大秦去了广州塔,拍了一组美美的照片:

两点IT, 倾情打造

两点IT, 倾情打造


今早上睡了个懒觉,由于路由器前两天坏掉了,准备去买个路由器, 路上打开微信,看到了同事发来的求救信号:

两点IT, 倾情打造

两点IT, 倾情打造

注册不了,第一反应是验证问题,刚好当时距离公司只有两分钟的路程,顺便就来加班搞搞,打开网站,进入注册,直接审查元素(不要问我为什么用了jquery, 我也很不想用啊,可是这些项目改起来要全部重写一遍呢,哎!):

两点IT, 倾情打造

看引入文件应该是没有在里面, 我们就打开第一个script标签,然后就看到了:

两点IT, 倾情打造

这是验证的代码, 没问题啊, 继续往下读:

两点IT, 倾情打造

看来这里是发送验证码的, 回头看转发的聊天记录:

两点IT, 倾情打造

看来, 是有人修改过但是改漏掉了注册的验证,我们往下翻,果然找到了一段咋一看几乎是一样的代码: 


两点IT, 倾情打造

就是它了,确认无疑: 

    var reg2   = /^1[34578]d{9}$/;    if (!reg2.test(mobile)){        layer.open({              content: '请输入正确手机号'              ,skin: 'msg'              ,time: 1 //2秒后自动关闭            });        return false;      }



主要是这段正则: /^1[34578]d{9}$/它的意思是, 匹配第一位数是1,第二位数是3,4,5,6,7或8的一个,后面再跟9位任意数字的字符串,那么问题来了,我们的号码是199,第二位的9是验证失败的,找到原因了,直接改: 

    var reg2   = /^1[345789]d{9}$/;    if (!reg2.test(mobile)){        layer.open({              content: '请输入正确手机号'              ,skin: 'msg'              ,time: 1 //2秒后自动关闭            });        return false;      }

保存,我们测试一下: 

两点IT, 倾情打造

号码错误的提示没了,说明我们的199号段号码验证通过, 任务完成!

作为一个负责任的程序员,改了人家的代码就得打个备注,提醒自己也帮助他人:(...表示省略的代码片段)

      // 2019.6.5新增16和19开头的手机号码段。      var reg2   = /^1[345789]d{9}$/;
...      if (!reg2.test(mobile)){ ... }

【没营养的正文完毕】

【附1】其他常用验证规则:

固话/电话号码: /^((d{3,4})|d{3,4}-|s)?d{7,14}$/身份证正则(15位): /^[1-9]d{7}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3}$/身份证正则(18位): /^[1-9]d{5}[1-9]d{3}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{4}$/身份证正则合并: (^d{15}$)|(^d{17}([0-9]|X)$)提取信息中的网络链接:(h|H)(r|R)(e|E)(f|F) *= *('|")?(w|\|/|.)+('|"| *|>)?提取信息中的邮件地址:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*提取信息中的图片链接:(s|S)(r|R)(c|C) *= *('|")?(w|\|/|.)+('|"| *|>)?提取信息中的IP地址:(d+).(d+).(d+).(d+)提取信息中的中国电话号码(包括移动和固定电话):((d{3,4})|d{3,4}-|s)?d{7,14}提取信息中的中国邮政编码:[1-9]{1}(d+){5}提取信息中的中国身份证号码:d{18}|d{15}提取信息中的整数:d+提取信息中的浮点数(即小数):(-?d*).?d+提取信息中的任何数字 :(-?d*)(.d+)?提取信息中的中文字符串:[u4e00-u9fa5]*提取信息中的双字节字符串 (汉字):[^x00-xff]*


附2身份证验证(关联地域ID)

// 身份证验证function isIDCard(obj{    var aCity = {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 iSum = 0;    //var info = "";    var strIDno = obj;    var idCardLength = strIDno.length;    if (!/^d{17}(d|x)$/i.test(strIDno) && !/^d{15}$/i.test(strIDno))        return false; //非法身份证号
if (aCity[parseInt(strIDno.substr(0, 2))] == null) return false;// 非法地区
// 15位身份证转换为18位 if (idCardLength == 15) { sBirthday = "19" + strIDno.substr(6, 2) + "-" + Number(strIDno.substr(8, 2)) + "-" + Number(strIDno.substr(10, 2)); var d = new Date(sBirthday.replace(/-/g, "/")) var dd = d.getFullYear().toString() + "-" + (d.getMonth() + 1) + "-" + d.getDate(); if (sBirthday != dd) return false; //非法生日 strIDno = strIDno.substring(0, 6) + "19" + strIDno.substring(6, 15); strIDno = strIDno + GetVerifyBit(strIDno); }
// 判断是否大于2078年,小于1900年 var year = strIDno.substring(6, 10); if (year < 1900 || year > 2078) return false;//非法生日
//18位身份证处理
//在后面的运算中x相当于数字10,所以转换成a strIDno = strIDno.replace(/x$/i, "a");
sBirthday = strIDno.substr(6, 4) + "-" + Number(strIDno.substr(10, 2)) + "-" + Number(strIDno.substr(12, 2)); var d = new Date(sBirthday.replace(/-/g, "/")) if (sBirthday != (d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d.getDate())) return false; //非法生日 // 身份证编码规范验证 for (var i = 17; i >= 0; i --) iSum += (Math.pow(2, i) % 11) * parseInt(strIDno.charAt(17 - i), 11); if (iSum % 11 != 1) return false;// 非法身份证号
// 判断是否屏蔽身份证 var words = new Array(); words = new Array("11111119111111111", "12121219121212121");
for (var k = 0; k < words.length; k++) { if (strIDno.indexOf(words[k]) != -1) { return false; }    }    // 返回验证结果    return true;},
两点IT, 倾情打造
今日学习内容到这里就完成了,小伙伴快快动手实践吧!



两点IT, 倾情打造

公众号ID:两点IT
两点IT, 倾情打造
扫码关注最新动态
编辑:两点IT
/大秦/


原文始发于微信公众号(两点IT):两点IT, 倾情打造

声明:大秦的博客|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 前端攻城=>`验证规则系列`


一条闲鱼