身份证编码合法性检测(基于XML数据)
中国的居民身份证编码格式为:2位一级行政区代码;2位二级行政区代码;2位易做图行政区代码;8位出生日期(年月日);3位识别码;1位校验码。其中校验码执行的是中华人民共和国国家标准GB11643-1999,即ISO7064:1983.MOD 11-2。
前6位的行政区划代码包含的信息只能存储于数据文件中。我看到许多例子都使用数据库或文本文件对其存储,查询起来很不方便。而使用Microsoft.XMLDOM则简单易行:首先将身份证数据转换为XML格式,然后通过XPath进寻查询,体积小,速度快,Client或Server均可执行,也可通过AJAX访问;而不像数据库,只能在Server执行。以下是全部JavaScript代码和XML生成算法的C#代码。
1、HTML文件:
1. <html xmlns="http://www.w3.org/1999/xhtml">
2. <head>
3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
4. <title>居民身份证编码合法性检测(基于客户端XML数据)</title>
5. <style type="text/css">
6. body, table {
7. font-family:宋体;
8. font-size:9pt;
9. }
10. table, td {
11. border-width:1px;
12. border-style:solid;
13. border-color:#000000;
14. }
15. td {
16. height:30;
17. }
18. input {
19. width:200px;
20. height:22px;
21. }
22. </style>
23. <script type="text/javascript" src="CheckChineseID.js"></script>
24. <script type="text/javascript">
25. function xmlLoad() {
26. var xmlDoc = null;
27. try {
28. if (window.ActiveXObject) //IE
29. xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
30. else if (document.implementation.createDocument) //Mozilla, Firefox, Opera, etc.
31. xmlDoc = document.implementation.createDocument("", "", null);
32. xmlDoc.async = false;
33. xmlDoc.load("ChineseID.xml");
34. xmlDoc.setProperty("SelectionLanguage", "XPath");
35. }
36. finally {
37. return xmlDoc;
38. }
39. }
40. var xmlDoc = xmlLoad();
41. function show() {
42. if (xmlDoc == null)
43. alert(navigator.appName + "不支持XML对象,程序无法运行!");
44. else {
45. var result = checkId(id.value, xmlDoc);
46. if (typeof result == "string") {
47. t0.innerHTML = result;
48. t0.style.color = "#FF0000";
49. t1.innerHTML = t2.innerHTML = t3.innerHTML = t4.innerHTML = t5.innerHTML = "N/A";
50. }
51. else {
52. t0.innerHTML = "检测通过!";
53. t0.style.color = "#008000";
54. t1.innerHTML = result[0];
55. t2.innerHTML = result[1];
56. t3.innerHTML = result[2];
57. t4.innerHTML = result[3] + "年" + result[4] + "月" + result[5] + "日【" + result[6] + "岁】";
58. t5.innerHTML = result[7] + "【" + result[8] + "】";
59. }
60. var blink = 0;
61. var blinkId = setInterval(function () {
62. blink % 2 == 0 ? t0.style.backgroundColor = "#FFFFC0" : t0.style.backgroundColor = "#FFFFFF";
63. if (blink++ == 5) clearInterval(blinkId);
64. }, 200);
65. }
66. }
67. </script>
68. </head>
69. <body>
70. <p align="center">
71. <small><sub>居民</sub></small>身份证编码合法性检测(基于客户端XML数据)<br /><br />
72. 白宇 - 梦辽软件工作室 - 易做图网络有限责任公司<br />
73. Baiyu - Mengliao Software Studio - Bosun Network Co., Ltd.<br />
74. 2012.03.02</p>
75. <center>
76. <table cellpadding="5" cellspacing="0" width="320">
77. <tr>
78. <td width="100">身份证号码</td>
79. <td align="center">
80. <input type="text" maxlength="18" id="id" value="请输入18位身份证号码" style="color:#CCCCCC"
81. onfocus="if(this.value=='请输入18位身份证号码'){this.value='';this.style.color='#000000';}"
82. onblur="if(this.value==''){this.value='请输入18位身份证号码';this.style.color='#CCCCCC';}"
83. ondblclick="clipboardData.setData('Text','150722201203020010');alert('示例:150722201203020010\n\n该示例已复制到剪贴板!');"
84. onkeypress="if(event.keyCode==13) btn.click()" />
85. </td>
86. </tr>
87. <
补充:Web开发 , 其他 ,