身份证号规则及校验

// 省份编号
var aCity={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:"国外 "}; 
// 验证身份证号,成功则返回省份编号+出生日期+性别
function cidInfo(sId){ 
var iSum=0;
if(!/^\d{17}(\d|x)$/i.test(sId))return -1; 
sId=sId.replace(/x$/i,"a"); 
if(aCity[parseInt(sId.substr(0,2))]==null) return -2;//return "Error:非法地区";
birthday = ""+sId.substr(6,4)+Number(sId.substr(10,2))+Number(sId.substr(12,2));
sBirthday=sId.substr(6,4)+"-"+Number(sId.substr(10,2))+"-"+Number(sId.substr(12,2)); 
var d=new Date(sBirthday.replace(/-/g,"/")); 
if(sBirthday!=(d.getFullYear()+"-"+ (d.getMonth()+1) + "-" + d.getDate())) return -3;//return "Error:非法生日"; 
for(var i = 17;i>=0;i --) iSum += (Math.pow(2,i) % 11) * parseInt(sId.charAt(17 - i),11);
if(iSum%11!=1) return -4; //return "Error:非法证号"; 
return ""+parseInt(sId.substr(0,2))+birthday+(sId.substr(16,1)%2?1:2); //"男":"女"); 
}

http://jingyan.baidu.com/article/22a299b525f9cd9e18376a58.html

http://baike.baidu.com/link?url=EfPjzVve_FHOewwpqOyF3f7D9PqYL0kX8GnS4TYMSf1rkjPkjFpfbz4ACI-WAx4PWqNrc4InaX3dJ2BiMqfP2a

时间: 2024-10-13 03:02:14

身份证号规则及校验的相关文章

身份证号生成,校验码计算

二代身份证号有18位,组成是: 6位地区码+8位出生年月日+3位顺序码+1位校验码 其中,校验码计算如下图,本范例按照红色计算方向走 第一步骤就是映射权重:第二步骤是求积:第三步骤相加求余:最后一个步骤就是查找码表得出最后1位字符 红色方向数字更小,计算更快. import randomimport time   # 地区区域码,此范例只列出3位areas = ('610622', '410901', '321281', '350581')# 身份证前17位权重w17 = (7, 9, 10,

验证身份证号规则(验证身份证号是否正确)

案例: 某公民的身份证号: 34052419800101001X  (18位) 加权因子表: 位置序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 加权因子 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 身份证号的前17位数字分别乘以对应的加权因子,并且相加. 第一步: 3*7+9*4+10*0+5*5+8*2+4*4+2*1+1*9+6*8+3*0+7*0+9*1+10*0+5*1+8*0+4*0+2*1=189 第二步: 18

Android 正则表达式验证手机号、姓名(包含少数民族)、身份证号

最近项目中新增的功能,需要对手机号.姓名.身份证号等一些信息进行验证,最好的方法是通过正则表达式来验证,网上查了一些资料,写了这几个工具方法. 1.验证手机号 规则:第一位只能是1,第二位为3-8中的数字,3-11位为任意的数字 /** * 手机号号段校验, 第1位:1: 第2位:{3.4.5.6.7.8}任意数字: 第3-11位:0-9任意数字 * @param value * @return */ public static boolean isTelPhoneNumber(String v

身份证号正则校验(js校验+JAVA校验)

js校验身份证号[15位和18位] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 8

证件类型为身份证号时进行身份证校验

需求:代办人身份证号改为代办人证件类型(默认为身份证号),后面跟着号码,房主和代办人的证件类型为身份证号时进行身份证校验 sf_ghgl_add.jsp <td class="labelCss">代办人证件类型:</td> <td><select id="zjlx" width="10px" class="easyui-combobox" data-options="url:

Jquery身份证号校验以及根据身份证自动写入出生年月

效果图: 根据身份证号自动写入出生年月 身份证号码校验: js代码部分: 1 $(function() { 2 jQuery.validator.addMethod("isIdCardNo", function (value, element) { 3 return this.optional(element) || isIdCardNo(value); 4 }, "请正确输入您的身份证号码"); 5 6 $.datepicker.setDefaults($.dat

Delphi:校验手机号及身份证号

//校验手机号  function IsMobileNumber( num:string ):boolean;   begin     Result:=False;     if length( trim( Num ) ) <> 11 then Exit;     if ( ( copy( num, 1, 2) <> '13' ) and ( copy( num , 1, 2) <> '15' ) ) then Exit;     try       StrToInt(

.net验证身份证号是否符合规则

验证身份证号是否符合规则,比较实用,错判率我自己测试为0,挺好用的,欢迎大神补充. protected bool checkidcard(string idcard) { //验证18位或者17位加大小写x Regex rg = new Regex(@"^\d{17}(\d|X|x)$"); Match mc = rg.Match(idcard); string r = ""; if (!mc.Success) return false; //验证前两位是否符合地区

java身份证合法性校验并获取并根据身份证号提取身份证相关信息

/** * 身份证前6位[ABCDEF]为行政区划数字代码(简称数字码)说明(参考<GB/T 2260-2007 中华人民共和国行政区划代码>): * 该数字码的编制原则和结构分析,它采用三层六位层次码结构,按层次分别表示我国各省(自治区,直辖市,特别行政区). * 市(地区,自治州,盟).县(自治县.县级市.旗.自治旗.市辖区.林区.特区). 数字码码位结构从左至右的含义是: 第一层为AB两位代码表示省.自治区.直辖市.特别行政区: 第二层为CD两位代码表示市.地区.自治州.盟.直辖市所辖市