检测身份证是否符合规则
来源:互联网 发布:linux和openwrt 编辑:程序博客网 时间:2024/04/30 23:39
转载请注明出处:http://blog.csdn.net/hhhhhhhhhhkkkkkkkkkk/article/details/40888901
//检测身份证号是否符合格式(0-符合,非0-不符合)//位:0-正确,1-错误//位意义(左->右):01234567// 行区划代码州级(不检)县级(不检)年月日顺序码(不检) 校验码WORD CheckIdentityCard(TCHAR*cardID){WORD code = 0;//位数不对。if (_tcslen(cardID) != 18)return ~0;//省、市、自治区行政区划代码TCHAR prov[][3] = { _T("11"), _T("12"), _T("13"), _T("14"), _T("15"),_T("21"), _T("22"), _T("23"),_T("31"), _T("32"), _T("33"), _T("34"), _T("35"), _T("36"), _T("37"),_T("41"), _T("42"), _T("43"), _T("44"), _T("45"), _T("46"),_T("50"), _T("51"), _T("52"), _T("53"),_T("61"), _T("62"), _T("63"), _T("64"), _T("65"), _T("71"), _T("81"), _T("82")};bool isRight = false;for (int i = 0; i < sizeof(prov) / sizeof(TCHAR*); i++)if (prov[i][0] == cardID[0])if (prov[i][1] == cardID[1]){isRight = true;break;}if (!isRight)code++;//自治州(不检测)code <<= 1;//县级(不检测)code <<= 1;//年code <<= 1;int year = 0;year +=1000* (cardID[6]-48);year += 100 * (cardID[7] - 48);year += 10 * (cardID[8] - 48);year += 1 * (cardID[9] - 48);if (!((year >= 1800) && (year <= 2100)))code++;//月code <<= 1;int mon = 0;mon += 10 * (cardID[10] - 48);mon += 1 * (cardID[11] - 48);if (!((mon >= 1) && (mon <= 12)))code++;//日code <<= 1;int day = 0;day += 10 * (cardID[12] - 48);day += 1 * (cardID[13] - 48);switch (mon){//当月份正确,用这3行case检测case 1:case 3:case 5:case 7:case 8:case 10:case 12:if (!((day >= 1) && (day <= 31)))code++;break;case 4:case 6:case 9:case 11:if (!((day >= 1) && (day <= 30)))code++;break;case 2:if (!((day >= 1) && (day <= 29)))code++;// 因为不进行润年处理,2月以29天来算break;default://当月份不正确,以一个月31天来检测if (!((day >= 1) && (day <= 31)))code++;break;}//顺序码(不检测)code <<= 1;//校验码code <<= 1;int weight[] = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };//由2^(17-i)计算而来。i从0开始TCHAR checkCode[] = _T("10X98765432");//校验码int sum = 0;for (int i = 0; i < 17; i++)sum += (cardID[i] - 48) *weight[i];sum %= 11;if(cardID[17]!=checkCode[sum])code++;return code;}
0 0
- 检测身份证是否符合规则
- 验证身份证号码是否符合规则
- 判断手机号码是否符合规则
- 判断手机号码是否符合规则
- 检测是否符合Email格式
- 检验字段值是否符合规则
- 验证银行卡卡号是否符合规则
- .net验证身份证号是否符合规则
- boost::spirit验证字符串是否符合四则运算规则
- 第二十一题 栈的输入输出是否符合栈的规则
- 验证表单内容是否符合数据库字段的规则
- 身份证规则
- 检测Html,Css文件是否符合标准的网址
- Java实现扫描SVN项目代码检测是否符合规范
- 简单检测输入框内容是否符合要求
- LeetCode520. Detect Capital--检测单词的大写字母是否符合规范
- 检测身份证
- 检测身份证
- 短信api服务
- ProcessOn-UML专业社交网络
- C#学习笔记:矩形判断
- DPDK内存管理-----(一)初始化
- Oracle11g数据库导入Oracle10g问题
- 检测身份证是否符合规则
- java文件上传(解析request流)
- HTML学习笔记----表单标签
- java,自动搭建jdk环境
- UPnP基本原理以及在NAT中的应用
- 航班查询接口
- 【Cocos2d-x】从C++过渡到Lua
- 微话95013体验卡优惠套餐
- 关于解决plupload插件整合ssh的问题