判断身份证

function checkIdCard(idCard) {
    //该方法由佚名网友提供;

var Wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1]; // 加权因子;
    var ValideCode = [1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2]; // 身份证验证位值,10代表X;

if (idCard.length == 15) {
        return isValidityBrithBy15IdCard(idCard);
    } else if (idCard.length == 18) {
        var a_idCard = idCard.split(""); // 得到身份证数组  
        if (isValidityBrithBy18IdCard(idCard) && isTrueValidateCodeBy18IdCard(a_idCard)) {
            return true;
        }
        return false;
    }
    return false;

function isTrueValidateCodeBy18IdCard(a_idCard) {
        var sum = 0; // 声明加权求和变量   
        if (a_idCard[17].toLowerCase() == ‘x‘) {
            a_idCard[17] = 10; // 将最后位为x的验证码替换为10方便后续操作  
        }
        for (var i = 0; i < 17; i++) {
            sum += Wi[i] * a_idCard[i]; // 加权求和  
        }
        valCodePosition = sum % 11; // 得到验证码所位置  
        if (a_idCard[17] == ValideCode[valCodePosition]) {
            return true;
        }
        return false;
    }

function isValidityBrithBy18IdCard(idCard18) {
        var year = idCard18.substring(6, 10);
        var month = idCard18.substring(10, 12);
        var day = idCard18.substring(12, 14);
        var temp_date = new Date(year, parseFloat(month) - 1, parseFloat(day));
        // 这里用getFullYear()获取年份,避免千年虫问题  
       
if (temp_date.getFullYear() != parseFloat(year) || temp_date.getMonth()
!= parseFloat(month) - 1 || temp_date.getDate() != parseFloat(day)) {
            return false;
        }
        return true;
    }

function isValidityBrithBy15IdCard(idCard15) {
        var year = idCard15.substring(6, 8);
        var month = idCard15.substring(8, 10);
        var day = idCard15.substring(10, 12);
        var temp_date = new Date(year, parseFloat(month) - 1, parseFloat(day));
        // 对于老身份证中的你年龄则不需考虑千年虫问题而使用getYear()方法  
       
if (temp_date.getYear() != parseFloat(year) || temp_date.getMonth() !=
parseFloat(month) - 1 || temp_date.getDate() != parseFloat(day)) {
            return false;
        }
        return true;
    }

}

时间: 2024-10-16 13:08:35

判断身份证的相关文章

判断身份证是否和性别相符

用处: 用于判断身份证是否和性别相符 DECODE(MOD(TO_NUMBER(DECODE(Length(certno),15,SUBSTR(certno,15,1),18,SUBSTR(certno,17,1))),2),1,1,0,2)<> GENDER GENDER = 1 男

判断身份证是否合法

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Common { public static class IdentityCardHelper { /// <summary> /// 1.判断身份证是否合法 /// 2.判断用户是否成年 /// </summary> /// <

[华为机试]判断身份证信息是否合法

代码为; #include <iostream> #include <sstream> #include <fstream> #include <string> #include <vector> int main() { std::vector<std::string> identity; std::string temp; std::ifstream file("in.txt"); while(getline(

获取倒计时距离某一时间点的时间,判断身份证,电话号码格式是否正确的简单封装

#import "HelpToolsDataOrPhoneOrIDCard.h" @implementation HelpToolsDataOrPhoneOrIDCard + (NSString *)getTimeFromThatTime:(NSDateComponents *)componets{ //    创建一个日历对象,并用构造方法选择不同地区的时间NSCalendarIdentifierChinese NSCalendar * calendar =[[NSCalendar

使用Excel的函数批量判断身份证号码是否有效

一.描述 现在有一个批量上传用户的需求,其中需要上传用户名.姓名和身份证号码,进行实名批量注册,如何能快速判断用户给的身份证号是否格式正确呢?其实无论是WPS的excel还是Microsoft office中的excel都提供了函数功能,我们只要在单元中调用一定的函数就可以判断该身份证是否符合要求,如果符合,就输出Right,错误就输出Wrong. 二.源代码 =IF(LOOKUP((LEFT(C2,1)*7+MID(C2,2,1)*9+MID(C2,3,1)*10+MID(C2,4,1)*5+

判断身份证: 要么是 15 位, 要么是 18 位, 最后一位可以 为字母, 并写程序提出其中的年月日。

答: 我们可以用正则表达式来定义复杂的字符串格式, (\d{17}[0-9a-zA-Z]|\d{14}[0-9a-zA-Z])可以用来判断是否为合法的 15 位或 18 位身份证号码.因为 15 位和 18 位的身份证号码都是从 7 位到第 12 位为身份证为日期类型.这样我们可以设计出更精确的正则模式, 使身份证号的日期合法, 这样我们的正则模式可以进一步将日期部分的正则修改为[12][0-9]{3}[01][0-9][123][0-9], 当然可以更精确的设置日期.在 jdk 的 java.

判断身份证法则

private bool CheckIDCard(string Id) { if (Id.Length == 18) { bool check = CheckIDCard18(Id); return check; } else if (Id.Length == 15) { bool check = CheckIDCard15(Id); return check; } else { return false; } } private bool CheckIDCard18(string Id) {

js 判断身份证好是否合法

function cidInfo(sId){ var iSum=0 var info="" //if(!/^\d{17}(\d|x)$/i.test(sId))return false; sId=sId.replace(/x$/i,"a"); if (aCity[parseInt(sId.substr(0, 2))] == null) return "身份证格式不正确"; //"Error:非法地区"; sBirthday=s

java判断身份证有效性

import java.util.Calendar; public class CertNoUtil { public static boolean vIDNumByRegex(String idNum) { String curYear = "" + Calendar.getInstance().get(Calendar.YEAR); int y3 = Integer.valueOf(curYear.substring(2, 3)); int y4 = Integer.valueOf