身份证号码

function checkidcard(str) {
	var temp = {};
	if (id_cards.checkCard(str)) {
		temp.msg = "";
		temp.statu = true;
		return temp;
	} else {
		temp.msg = "身份证号格式不正确";
		temp.statu = false;
		return temp;
	}
}

//身份证号码
var id_cards = {
	cities: {
		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: "国外"
	},
	checkCard: function(a) {
		return this.isCardNo(a) && this.checkProvince(a) && this.checkBirthday(a) && this.checkParity(a)
	},
	isCardNo: function(a) {
		var b = /(^\d{15}$)|(^\d{17}(\d|X)$)/i;
		return b.test(a)
	},
	checkProvince: function(a) {
		var b = a.substr(0, 2);
		return void 0 == this.cities[b] ? !1 : !0
	},
	checkBirthday: function(a) {
		var b = a.length;
		if ("15" == b) {
			var c = /^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/,
				d = a.match(c),
				e = d[2],
				f = d[3],
				g = d[4],
				h = new Date("19" + e + "/" + f + "/" + g);
			return this.verifyBirthday("19" + e, f, g, h)
		}
		if ("18" == b) {
			var i = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/i,
				d = a.match(i),
				e = d[2],
				f = d[3],
				g = d[4],
				h = new Date(e + "/" + f + "/" + g);
			return this.verifyBirthday(e, f, g, h)
		}
		return !1
	},
	checkParity: function(a) {
		var b = a.length;
		if ("18" == b) {
			var c, d, e = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2),
				f = new Array("1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"),
				g = 0;
			for (c = 0; 17 > c; c++) g += a.substr(c, 1) * e[c];
			return d = f[g % 11],
				d == a.substr(17, 1).toUpperCase() ? !0 : !1
		}
		return !0
	},
	verifyBirthday: function(a, b, c, d) {
		var e = new Date,
			f = e.getFullYear();
		if (d.getFullYear() == a && d.getMonth() + 1 == b && d.getDate() == c) {
			var g = f - a;
			return g >= 0 && 120 >= g ? !0 : !1
		}
		return !1
	}
};

  

时间: 2024-11-03 22:26:14

身份证号码的相关文章

算法提高 身份证号码升级

问题描述 从1999年10月1日开始,公民身份证号码由15位数字增至18位.(18位身份证号码简介).升级方法为: 1.把15位身份证号码中的年份由2位(7,8位)改为四位. 2.最后添加一位验证码.验证码的计算方案: 将前 17 位分别乘以对应系数 (7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2) 并相加,然后除以 11 取余数,0-10 分别对应 1 0 x 9 8 7 6 5 4 3 2. 请编写一个程序,用户输入15位身份证号码,程序生成18位身份证号码.假设所

例题:输入身份证号码,判断你是什么生肖。switch,case练习,substring 类使用联系,会用取余

Console.WriteLine("请输入您的身份证号码"); string x = Console.ReadLine(); string year=x.Substring (6,4);//从身份证的第六位开始截取,往后截取四位,就是你的出生年份 int x1 = Convert.ToInt32(year);//把截取到年份代入到x1中, string sx = ""; switch(x1%12)//输入一个年份取余,如果假设取余为四,你能判断那年的生肖,然后根据

使用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+

身份证号码合法性判断

问题描述: 我国公民的身份证号码特点如下: 1.长度为18位: 2.第1-17位只能为数字: 3.第18位可以是数字或者小写英文字母x. 4.身份证号码的第7~14位表示持有人生日的年.月.日信息. 例如:511002198808080111或51100219880808011x. 请实现身份证号码合法性判断的函数.除满足以上要求外,需要对持有人生日的年.月.日信息进行校验.年份大于等于1900年,小于等于2100年.需要考虑闰年.大小月的情况.所谓闰年,能被4整除且不能被100整除或能被400

比较严谨的java验证18位身份证号码

/** * 我国公民的身份证号码特点如下 * 1.长度18位 * 2.第1-17号只能为数字 * 3.第18位只能是数字或者x * 4.第7-14位表示特有人的年月日信息 * 请实现身份证号码合法性判断的函数,函数返回值: * 1.如果身份证合法返回0 * 2.如果身份证长度不合法返回1 * 3.如果第1-17位含有非数字的字符返回2 * 4.如果第18位不是数字也不是x返回3 * 5.如果身份证号的出生日期非法返回4 * * @since 0.0.1 */ private int valida

身份证号码工具类

转载自:http://www.3fwork.com/b200/002695MYM017139/ 身份证工具类,可以解析出身份证号是否通过校验.性别.年龄和出生所在地 一.居民身份证的简介      居民身份证号码,由十七位数字本体码和一位数字校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码.居民身份证是国家法定的证明公民个人身份的有效证件.二.居民身份证的组成和结构      1.号码的结构      公民身份号码是特征组合码,由十七位数字本

C#实现身份证号码验证的方法

本文实例讲述了C#实现身份证号码验证的方法.分享给大家供大家参考.具体实现方法如下: 随着现在互联网的发展,越来越多的注册用户的地方都用到了身份证,那么对于输入的身份证如何验证呢?看下面的代码,其实很简单. 主要注意的是,目前的身份证分为16和18位,然后分别验证校验位,省份,生日即可. 主要类如下: /// <summary> /// 验证身份证号码类 /// </summary> public class IDCardValidation { /// <summary&g

C#根据身份证号码,计算生日、年龄、性别

朋友谈及身份证相关的信息,才了解到原来省份证号码中包含了年龄和性别. 这样在数据库中,就不必单独留字段存放它们了(不过,要根据具体情况来,要是读取频率较高,还是单独列出为好),这样顺带解决了年龄变更的问题. 程序仅仅为了实现这个功能,里面还是需要数据验证的,用户输入的信息,毕竟在猿类看来,都是“非法的”.废话不多说了,贴上我写的程序,还请路过的大神斧正: using System; using System.Collections.Generic; using System.Linq; usin

Android 身份证号码查询、手机号码查询、天气查询

1.基本信息 身份证号码查询:http://apistore.baidu.com/apiworks/servicedetail/113.html 手机号码:http://apistore.baidu.com/apiworks/servicedetail/117.html 天气查询http://apistore.baidu.com/apiworks/servicedetail/112.html 2.运行效果       

身份证号码识别

我国公民的身份证号码特点如下: 1.     长度为18位: 2.     第1-17位只能为数字: 3.     第18位可以是数字或者小写英文字母x. 4.     身份证号码的第7~14位表示持有人生日的年.月.日信息. 例如:511002198808080111或51100219880808011x. 请实现身份证号码合法性判断的函数.除满足以上要求外,需要对持有人生日的年.月.日信息进行校验.年份大于等于1900年,小于等于2100年. 需要考虑闰年.大小月的情况.所谓闰年,能被4整除