JS企业中征码证件校验正则

news/2024/11/29 7:47:17/

    这段时间,公司进行的项目需要用到一些个人证件和企业证件的校验,参考了一些网上的代码,其实现在很多的规则都已经被大佬们编写出来,并且正常使用.所以在网上搜集了一些资料.经过一些修改,大部分都能直接用了,唯独少了中征码的校验.在此之前,我其实也不知道啥叫中征码.

     不过呢,管他是啥,有规则就成.话不多说直接上代码.

 先提一嘴校验规则

                                       

                                         

上图为计算规则以及字母对应的机器码值.

下面上代码:

function checkZZM(value){/** 公司给到我的规则为:* 编码长度应为 16 位;
 	 * 第 1 到 3 位应为字母或者数字;
   * 第 4-14 位应为数字;
   * 校验位(最后两位)符合校验规则,下公式* (符号打不出来... 就是对前14位值乘以加权因子,最后对97取余再+1)* A=1+MOD(∑Ci x Wi,97)*///先定义正则,前三位为字母或数字, 4-16位为数字,最后两位为校验码var reg = /^[A-Z0-9]{3}[0-9]{4,16}$/;var re = new RegExp(reg);if(!re.test(value)){return false;}//最后两位校验码var code = value.substring(14,16);//前14位序号值var idCode = value.substring(0,14);// 加权因子(固定)var weight_factor = [1,3,5,7,11,2,13,1,1,17,19,97,23,29];var arr = idCode.split("");var len = arr.length;var num = 0;for(var i = 0; i < len; i++){if(arr[i]>="A" && arr[i]<="Z"){//第一次觉得js比java好写.因为java还要转类型转来转去...js多好 直接用就好了arr[i] = enToNumberFun(arr[i])}//计算总和num = num + arr[i] * weight_factor[i];}// 获取余数var resisue = num%97+1;//因为校验位是两位,则如果最后的余数只有一位的话,还要补一个0if(resisue<10){resisue = "0" + resisue;}//校验位和余数相等则校验通过if((resisue == code)){return true;}return false;
}
//将大写字母的值转换为机器处理用代码字符数值(只考虑大写)
function enToNumberFun(val){var b = val.charCodeAt()-55;return b;
}

这样输入一串字符,就可以验证啦.

ASD1234567891473 这样就是一个按上述规则验证为合理的中征码啦.

还写了一份java版的,待会上传,希望有大神看到哪里写的不合理或者可优化的地方,可以联系我,谢谢!!!

好记性不如烂笔头,加油!


http://www.ppmy.cn/news/830994.html

相关文章

【Python】Locust持续优化:InfluxDB与Grafana实现数据持久化与可视化分析

在进行性能测试时&#xff0c;我们需要对测试结果进行监控和分析&#xff0c;以便于及时发现问题并进行优化。 Locust在内存中维护了一个时间序列数据结构&#xff0c;用于存储每个事件的统计信息。 这个数据结构允许我们在Charts标签页中查看不同时间点的性能指标&#xff0c…

网络编程【TCP单向通信、TCP双向通信、一对多应用、一对多聊天服务器】(二)-全面详解(学习总结---从入门到深化)

目录 Java网络编程中的常用类 TCP通信的实现和项目案例 TCP通信入门案例 TCP单向通信 TCP双向通信 创建点对点的聊天应用 一对多应用 一对多聊天服务器 Java网络编程中的常用类 Java为了跨平台&#xff0c;在网络应用通信时是不允许直接调用操作系统接 口的&#xff0…

3.2V 磷酸铁锂电池充电芯片介绍--FS4057B

概述: FS4057B是一款完整的多模单节锂离子电池充电器&#xff0c; 可对 3.7V 锂电池, 3.2V 磷酸铁锂电池及 2.4V 钛酸锂电池充电&#xff0c; 充电器具有电池正负极反接保护&#xff0c;采用恒定电流/恒定电压线性控制。 FS4057B可以适合 USB 电源和适配器电源工作。由于采用了…

单节磷酸铁锂电池充电管理芯片IC驱动方案3.6V充电芯片手电筒_低压应急球泡灯适用

单节磷酸铁锂电池充电管理芯片IC驱动方案3.6V充电芯片手电筒_低压应急球泡灯适用 2&#xff1a;品牌名称&#xff1a;泛海微 3方案特点&#xff1a; 4.&#xff08;1&#xff09;产品特点 特点&#xff1a;  3.6V独立的单节磷酸铁锂电池充电管理  输入电压范围&…

锂电池驱动分析

锂电池的驱动程序要实现以下五个功能&#xff1a; 1.可以自动检测到当前给电池充电的是USB还是AC 2.组织过大的充电电流 3.坏电池检测 4.死亡温度的检测 5.电池电压的测量 当我们要写一个锂电池的驱动程序的时候&#xff0c;首先要知道内核提供给驱动的接口&#xff0c;就…

宁德时代换挡,钠电池“接力”锂电池?

宁德时代以一己之力将钠电池推上了台前&#xff0c;钠电池量产被提上日程&#xff0c;钠离子电池产业化将进一步加速。 去年7月&#xff0c;宁德时代在发布会上宣布&#xff0c;其开发的第一代钠离子电池&#xff0c;电芯单体能量密度已经达到了160Wh/kg&#xff0c;为目前全球…

2022年全球及中国储能锂电BMS市场产业链发展结构分析及投资规模竞争格局研究预测

2022年全球及中国储能锂电BMS市场产业链发展结构分析及投资规模竞争格局研究预测 1、电池安全管理行业的界定&#xff1a; &#xff08;1&#xff09;电池安全管理系统的作用及定位&#xff1a;电池安全管理系统是电源系统的重要组成部分&#xff0c;主要用于智能化管理及维护…