身份证号校验

news/2024/11/23 5:51:03/
//身份证号校验
function isIDCard(card){if (card === '') {console.log('请输入身份证号,身份证号不能为空');return false;}if (isCardNo(card) === false) {console.log('您输入的身份证号码不正确');return false;}//检查省份// if (checkProvince(card, city) === false) {//     console.log('您输入的身份证号码不正确');//     return false;// }//校验生日if (checkBirthday(card) === false) {console.log('您输入的身份证号码生日不正确');return false;}//检验位的检测if (checkParity(card) === false) {console.log('您的身份证校验位不正确');return false;}return true;console.log('OK');
}
//检查号码是否符合规范,包括长度,类型
function isCardNo(card) {//身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符Xvar reg = /(^\d{15}$)|(^\d{17}(\d|X)$)/;if (reg.test(card) === false) {return false;}return true;
};
//取身份证前两位,校验省份
function checkProvince(card, vcity) {var province = card.substr(0, 2);if (vcity[province] == undefined) {return false;}return true;
};
//检查生日是否正确
function checkBirthday(card) {var len = card.length;//身份证15位时,次序为省(3位)市(3位)年(2位)月(2位)日(2位)校验位(3位),皆为数字if (len == '15') {var re_fifteen = /^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/;var arr_data = card.match(re_fifteen);var year = arr_data[2];var month = arr_data[3];var day = arr_data[4];var birthday = new Date('19' + year + '/' + month + '/' + day);return verifyBirthday('19' + year, month, day, birthday);}//身份证18位时,次序为省(3位)市(3位)年(4位)月(2位)日(2位)校验位(4位),校验位末尾可能为Xif (len == '18') {var re_eighteen = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/;var arr_data = card.match(re_eighteen);var year = arr_data[2];var month = arr_data[3];var day = arr_data[4];var birthday = new Date(year + '/' + month + '/' + day);console.log("输出生日", birthday);return verifyBirthday(year, month, day, birthday);}return false;
};
//校验日期
function verifyBirthday(year, month, day, birthday) {var now = new Date();var now_year = now.getFullYear();//年月日是否合理if (birthday.getFullYear() == year && (birthday.getMonth() + 1) == month && birthday.getDate() == day) {//判断年份的范围(0岁到100岁之间)var time = now_year - year;if (time >= 0 && time <= 100) {return true;}return false;}return false;
};
//校验位的检测
function checkParity(card) {//15位转18位card = changeFivteenToEighteen(card);var len = card.length;if (len == '18') {var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');var cardTemp = 0,i, valnum;for (i = 0; i < 17; i++) {cardTemp += card.substr(i, 1) * arrInt[i];}valnum = arrCh[cardTemp % 11];if (valnum == card.substr(17, 1)) {return true;}return false;}return false;
};
//15位转18位身份证号
function changeFivteenToEighteen(card) {if (card.length == '15') {var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');var cardTemp = 0,i;card = card.substr(0, 6) + '19' + card.substr(6, card.length - 6);for (i = 0; i < 17; i++) {cardTemp += card.substr(i, 1) * arrInt[i];}card += arrCh[cardTemp % 11];return card;}return card;
};

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

相关文章

验证身份证号码:

将18 位身份证的前17 位&#xff0c;对应乘以以下值&#xff08;7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2&#xff09;&#xff0c; 并累加这些乘积为s&#xff0c;将s 对11 求余&#xff0c;结果为0-10&#xff0c;对应的末尾验证码为(1, 0, X, 9, 8,7, 6, 5, 4,…

Python验证身份证号码是否有效

判断其是否有效 若不为18位&#xff0c;提示“长度错误”若前17位不为数字&#xff0c;提示“有无效字符”最后一位为校验码&#xff0c;若错误&#xff0c;提示”校验码错误”&#xff0c; 若校验码正确&#xff0c;提示“校验码正确” 校验码产生规则 身份证校验码产生的…

Java验证身份证号

一、需求和算法 需求 使用 Java 中 util 包通过键盘输入身份证号。使用算法校验身份证号是否合法。根据身份证号获取用户出生地。根据身份证号获取用户生日。根据身份证号获取用户性别。打印出生地、生日、性别。 算法 取出身份证号前 17 位与指定系数相乘。系数表如下&#x…

关于验证身份证号码是否为真实有效

以下代码仅供参考 void number(){char buf[] "身份证号码";int per[] {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};char ver[] "10X98765432";int i,count;printf("\n%d\n",strlen(buf));for(i 0;i < 17;i)count (int)(buf[i]-0)*per[i]; …

PHP 判断身份证号

PHP 检验身份证号可以使用正则表达式来实现。可以在正则表达式中规定身份证号的格式&#xff0c;然后使用 PHP 中的 preg_match 函数来判断输入的字符串是否符合这个格式。如果符合&#xff0c;返回 true&#xff0c;不符合返回 false。 下面是一个简单的例子&#xff0c;可以检…

Java判断身份证号码是否正确

方法如下&#xff1a; public static final int IDENTITYCODE_OLD 15; // 老身份证15位public static final int IDENTITYCODE_NEW 18; // 新身份证18位public static int[] Wi new int[17];/*** 判断身份证号码是否正确。* * param code* 身份证号码。* return …

验证身份证号码,较为完整的,可以验证身份证真伪

下边的方法可以较为完整的验证身份证真伪&#xff0c;可到当前平台验证身份证真伪http://www.ip33.com/shenfenzheng.html checkCode(val) { var p /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/ var factor [7, 9, 10, 5, 8, 4,…

验证身份证号码是否为正确值

今天&#xff08;2018-04-09&#xff09;在整理正则表达时&#xff0c;有一个关于身份证号码的正则匹配。最简单的不动脑子的匹配方式为&#xff1a;^[1-9]\d{16}[\d|x]$&#xff0c;但是这样很容易伪造一个身份证号来骗过电脑&#xff0c;于是加强版的正则匹配为&#xff1a; …