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

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

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

 先提一嘴校验规则

                                       

                                         

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

下面上代码:

function checkZZM(value){
	/*
	 * 公司给到我的规则为:
	 * 编码长度应为 16 位;
 	 * 第 1 到 3 位应为字母或者数字;
   * 第 4-14 位应为数字;
   * 校验位(最后两位)符合校验规则,下公式
	 * (符号打不出来... 就是对前14位值乘以加权因子,最后对97取余再+1)
	 * A=1+MOD(∑Ci x Wi,97)
	 */
	//先定义正则,前三位为字母或数字, 4-16位为数字,最后两位为校验码
	var reg =
在JavaScript中,验证中国的身份证号(15位的老版身份证或18位的新版身份证)需要考虑到校验的计算。身份证号校验遵循一定的算法,包括奇偶校验和出生日期校验。以下是一个简单的例子,使用正则表达式进行基本格式检查,然后提供一个函数来计算并验证校验: ```javascript const idCardRegex = /^(\d{15}|\d{18})$/; // 正则匹配15或18位数字 function isValidID(idCard) { if (!idCardRegex.test(idCard)) { return false; } let weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; // 验证权重数组 let sum = 0; let evenSum = 0; for (let i = 0; i < idCard.length; i++) { let digit = parseInt(idCard[i]); if (i % 2 === 0) { // 偶数位置(除了最后一位) sum += digit * weights[i]; } else { // 奇数位置 evenSum += digit * weights[i]; } } let remainder1 = sum % 11; let remainder2 = evenSum % 11; let checkCode1 = (remainder1 > 4) ? (10 - remainder1) : remainder1; let checkCode2 = (remainder2 > 4) ? (10 - remainder2) : remainder2; return ((idCard.charAt(idCard.length - 1) === String(checkCode1)) && (idCard.charAt(idCard.length - 2) === String(checkCode2))); } // 使用示例 console.log(isValidID('123456789012345678')); // 输出 true 或 false 根据实际值 ``` 这个函数首先检查身份证号的格式,然后根据身份证号的计算规则生成校验并与原始数据的最后两位比较。请注意,这个实现仅做基本格式和简单校验,完整的验证可能还需要与数据库或其他服务对比真实存在的身份证信息。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值