中国身份证号码验证,支持15,18位,可验证成功90%的身份证号


[csharp]view plaincopy
  1. <strongclass="k">using</strong>System;
  2. <strongclass="c">///<summary>
  3. </strong><strongclass="c">///SummarydescriptionforIDCardValid
  4. </strong><strongclass="c">///</summary>
  5. </strong><strongclass="k">public</strong><strongclass="k">class</strong>IDCardValid
  6. {
  7. <strongclass="k">public</strong>IDCardValid()
  8. {
  9. <strongclass="c">//
  10. </strong><strongclass="c">//TODO:Addconstructorlogichere
  11. </strong><strongclass="c">//
  12. </strong>}
  13. <strongclass="c">///<summary>
  14. </strong><strongclass="c">///验证身份证号码
  15. </strong><strongclass="c">///</summary>
  16. </strong><strongclass="c">///<paramname="Id">身份证号码</param>
  17. </strong><strongclass="c">///<returns>验证成功为True,否则为False</returns>
  18. </strong><strongclass="k">public</strong><strongclass="k">static</strong><strongclass="k">bool</strong>CheckIDCard(<strongclass="k">string</strong>Id)
  19. {
  20. <strongclass="k">if</strong>(Id.Length==18)
  21. {
  22. <strongclass="k">bool</strong>check=CheckIDCard18(Id);
  23. <strongclass="k">return</strong>check;
  24. }
  25. <strongclass="k">else</strong><strongclass="k">if</strong>(Id.Length==15)
  26. {
  27. <strongclass="k">bool</strong>check=CheckIDCard15(Id);
  28. <strongclass="k">return</strong>check;
  29. }
  30. <strongclass="k">else</strong>
  31. {
  32. <strongclass="k">return</strong><strongclass="k">false</strong>;
  33. }
  34. }
  35. <strongclass="r">#region身份证号码验证
  36. </strong>
  37. <strongclass="c">///<summary>
  38. </strong><strongclass="c">///验证15位身份证号
  39. </strong><strongclass="c">///</summary>
  40. </strong><strongclass="c">///<paramname="Id">身份证号</param>
  41. </strong><strongclass="c">///<returns>验证成功为True,否则为False</returns>
  42. </strong><strongclass="k">private</strong><strongclass="k">static</strong><strongclass="k">bool</strong>CheckIDCard18(<strongclass="k">string</strong>Id)
  43. {
  44. <strongclass="k">long</strong>n=0;
  45. <strongclass="k">if</strong>(<strongclass="k">long</strong>.TryParse(Id.Remove(17),<strongclass="k">out</strong>n)==<strongclass="k">false</strong>||n<Math.Pow(10,16)||<strongclass="k">long</strong>.TryParse(Id.Replace(<strongclass="s">'x'</strong>,<strongclass="s">'0'</strong>).Replace(<strongclass="s">'X'</strong>,<strongclass="s">'0'</strong>),<strongclass="k">out</strong>n)==<strongclass="k">false</strong>)
  46. {
  47. <strongclass="k">return</strong><strongclass="k">false</strong>;<strongclass="c">//数字验证
  48. </strong>}
  49. <strongclass="k">string</strong>address=<strongclass="s">"11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91"</strong>;
  50. <strongclass="k">if</strong>(address.IndexOf(Id.Remove(2))==-1)
  51. {
  52. <strongclass="k">return</strong><strongclass="k">false</strong>;<strongclass="c">//省份验证
  53. </strong>}
  54. <strongclass="k">string</strong>birth=Id.Substring(6,8).Insert(6,<strongclass="s">"-"</strong>).Insert(4,<strongclass="s">"-"</strong>);
  55. DateTimetime=<strongclass="k">new</strong>DateTime();
  56. <strongclass="k">if</strong>(DateTime.TryParse(birth,<strongclass="k">out</strong>time)==<strongclass="k">false</strong>)
  57. {
  58. <strongclass="k">return</strong><strongclass="k">false</strong>;<strongclass="c">//生日验证
  59. </strong>}
  60. <strongclass="k">string</strong>[]arrVarifyCode=(<strongclass="s">"1,0,x,9,8,7,6,5,4,3,2"</strong>).Split(<strongclass="s">','</strong>);
  61. <strongclass="k">string</strong>[]Wi=(<strongclass="s">"7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2"</strong>).Split(<strongclass="s">','</strong>);
  62. <strongclass="k">char</strong>[]Ai=Id.Remove(17).ToCharArray();
  63. <strongclass="k">int</strong>sum=0;
  64. <strongclass="k">for</strong>(<strongclass="k">int</strong>i=0;i<17;i++)
  65. {
  66. sum+=<strongclass="k">int</strong>.Parse(Wi[i])*<strongclass="k">int</strong>.Parse(Ai[i].ToString());
  67. }
  68. <strongclass="k">int</strong>y=-1;
  69. Math.DivRem(sum,11,<strongclass="k">out</strong>y);
  70. <strongclass="k">if</strong>(arrVarifyCode[y]!=Id.Substring(17,1).ToLower())
  71. {
  72. <strongclass="k">return</strong><strongclass="k">false</strong>;<strongclass="c">//校验码验证
  73. </strong>}
  74. <strongclass="k">return</strong><strongclass="k">true</strong>;<strongclass="c">//符合GB11643-1999标准
  75. </strong>}
  76. <strongclass="c">///<summary>
  77. </strong><strongclass="c">///验证18位身份证号
  78. </strong><strongclass="c">///</summary>
  79. </strong><strongclass="c">///<paramname="Id">身份证号</param>
  80. </strong><strongclass="c">///<returns>验证成功为True,否则为False</returns>
  81. </strong><strongclass="k">private</strong><strongclass="k">static</strong><strongclass="k">bool</strong>CheckIDCard15(<strongclass="k">string</strong>Id)
  82. {
  83. <strongclass="k">long</strong>n=0;
  84. <strongclass="k">if</strong>(<strongclass="k">long</strong>.TryParse(Id,<strongclass="k">out</strong>n)==<strongclass="k">false</strong>||n<Math.Pow(10,14))
  85. {
  86. <strongclass="k">return</strong><strongclass="k">false</strong>;<strongclass="c">//数字验证
  87. </strong>}
  88. <strongclass="k">string</strong>address=<strongclass="s">"11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91"</strong>;
  89. <strongclass="k">if</strong>(address.IndexOf(Id.Remove(2))==-1)
  90. {
  91. <strongclass="k">return</strong><strongclass="k">false</strong>;<strongclass="c">//省份验证
  92. </strong>}
  93. <strongclass="k">string</strong>birth=Id.Substring(6,6).Insert(4,<strongclass="s">"-"</strong>).Insert(2,<strongclass="s">"-"</strong>);
  94. DateTimetime=<strongclass="k">new</strong>DateTime();
  95. <strongclass="k">if</strong>(DateTime.TryParse(birth,<strongclass="k">out</strong>time)==<strongclass="k">false</strong>)
  96. {
  97. <strongclass="k">return</strong><strongclass="k">false</strong>;<strongclass="c">//生日验证
  98. </strong>}
  99. <strongclass="k">return</strong><strongclass="k">true</strong>;<strongclass="c">//符合15位身份证标准
  100. </strong>}
  101. <strongclass="r">#endregion
  102. </strong>}
优质内容筛选与推荐>>
1、HTTP协议和WEB应用
2、前端js区域上下拖拽
3、video、audio属性
4、数据库的一种完全面向对象设计模式 (转)
5、UESTC_全都是秋实大哥 2015 UESTC Training for Search Algorithm & String<Problem J>


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn