项目场景:

vue项目中身份证号码设置了校验,但是在验收的时候还可以输入错误的身份证号码。依旧通过了校验,发现是校验规则不够严格。替换一种新的校验方式


问题描述:

旧的正则校验不够严谨,可以输入合法但错误的身份证号。 代码:

data(){return {rules:{IDCard: [{required: true,pattern: /^(([1-9][0-9]{5}(19|20)[0-9]{2}((0[1-9])|(1[0-2]))([0-2][1-9]|10|20|30|31)[0-9]{3}([0-9]|X|x))|([1-9][0-9]{5}[0-9]{2}((0[1-9])|(1[0-2]))([0-2][1-9]|10|20|30|31)[0-9]{3}))$/,message: "请输入正确的身份证号",trigger: "blur"}],}}}

解决方案:

跟换身份证校验方式(这里可以允许为空,请根据需求修改)

data(){let checkRegNo = (rule,value,callback) => {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 tip = "";var pass= true;var patt1=new RegExp("(^[1-9]\\d{5}(18|19|([23]\\d))\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$)|(^[1-9]\\d{5}\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{2}$)");if(value == ''){pass = true;}else if(!patt1.test(value)){callback(new Error("身份证号格式错误"));pass = false;} else if(!city[value.substr(0,2)]){callback(new Error("地址编码错误"));pass = false;}else{//18位身份证需要验证最后一位校验位if(value.length == 18){value = value.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 = value[i];wi = factor[i];sum += ai * wi;}var last = parity[sum % 11];if(parity[sum % 11] != value[17]){callback(new Error("身份证号码错误"));pass =false;}}}if(pass){callback();}} return{rules:{Idcard: [{ validator: checkRegNo, trigger: "blur" }],}}}

新的校验方式必须输入完全正确的身份证号码,才能通过校验

vue身份证正则校验的2种类型相关推荐

  1. vue身份证正则校验

    对身份证号码进行正则校验 let regs = /(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|3 ...

  2. vue身份证号码校验

    一.vue身份证号码校验? let checkRegNo = (rule,value,callback) => {     setTimeout(() => {         const ...

  3. vueCli3 身份证正则校验

    js /** @Description:身份证校验规则.*/ //校验身份证号 export function isIdentityId(identityId) {var patrn = /(^\d{ ...

  4. js严格的身份证正则校验

    //校验身份证号 checkIDCard(idcode){// 加权因子var weight_factor = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];// 校验码 ...

  5. uniapp vue 身份证号校验

    在utils文件夹中创建一个文件   passid.js //身份证号严格校验 function identityIDCard(code) {//身份证号前两位代表区域var city = {11: ...

  6. java 身份证正则校验工具类

    import java.text.SimpleDateFormat; import java.util.Date;/** * 验证身份证号码 身份证号码, 可以解析身份证号码的各个字段, * 以及验证 ...

  7. vue路由守卫有哪三种类型

    vue中路由守卫一共有三种,分别为:全局路由守卫(全局前置守卫.全局后置守卫),组件内路由守卫,路由独享守卫(是在路由配置页面单独给路由配置的一个守卫). 路由守卫,也可以是路由拦截,我们可以通过路由 ...

  8. vue 身份证校验、识别性别/生日/年龄

    vue 身份证格式校验_chen_ai_tao的博客-CSDN博客_vue 身份证校验 Vue中根据输入的身份证号识别年龄.性别_cx&lavender的博客-CSDN博客_vue中根据省份证 ...

  9. iOS之身份证的正则校验

    理论部分: 15位身份证号码=6位地区代码+6位生日+3位编号 18位身份证号码=6位地区代码+8位生日+3位编号+1位检验码 各省市地区国家代码前两位代码是:        北京   11   吉林 ...

最新文章

  1. 点对点信道互连以太网实验_汽车以太网 – 引领汽车IVN向多速以太网过渡
  2. Django项目配置mysql主从数据库实现读写分离
  3. 2021云上架构与运维峰会将于12月4日在上海举办,五大精彩看点不容错过
  4. [引]VS2005 之 Visual Basic 程序的结构
  5. 麒麟操作系统|Linux下低延时RTMP|RTSP直播播放实现
  6. 03-04 元素定位工具
  7. Halcon模板匹配(基于相关性)
  8. sqlserver min函数其他set操作消除了null值_数据库常用SQL操作篇
  9. ASCll码字符对照表
  10. Android修行手册-EditText属性以及光标和小键盘控制
  11. 如何找到近期要召开的国际上所有的学术会议
  12. miniUI ExcelExport导出JAVA实现
  13. Microsoft Excel 教程:如何在 Excel 中使用条件格式?
  14. Linux云计算工程师路线
  15. 外国人申请在中国永久居留服务指南(中英文)
  16. Windows10怎么卸载删除微软拼音输入法
  17. 飞思卡尔16位单片机(十五)—— 如何批量烧写芯片
  18. MySQL表中的联合查询
  19. 文档查看器(Open XML)格式工具
  20. Python入门技巧

热门文章

  1. Java根据父节点获取所有子节点
  2. 深入理解Python元类(原创)
  3. 舒舍说:女生第一次租房要注意哪些问题?
  4. Cocos2dx之精灵创建
  5. python读大csv文件慢的问题,csv reader是个坑
  6. HTML——哄女朋友的相册模板
  7. 试析基于.NET的高校信息管理系统开发论文【转】
  8. 美国打车应用Lyft宣布IPO发行价定为72美元 今晚登陆纳斯达克
  9. HBase2.1.0分页查询(支持跳页)
  10. python construct_PHP __construct():构造函数/方法