IDCard.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. //判断是否是正确的身份证号码
  2. function isIDCard(StrNo) {
  3. StrNo = StrNo.toString()
  4. if (StrNo.length == 18) {
  5. var a, b, c
  6. if (!isInteger(StrNo.substr(0, 17)))
  7. return false;
  8. a = parseInt(StrNo.substr(0, 1)) * 7 + parseInt(StrNo.substr(1, 1)) * 9 + parseInt(StrNo.substr(2, 1)) * 10;
  9. a = a + parseInt(StrNo.substr(3, 1)) * 5 + parseInt(StrNo.substr(4, 1)) * 8 + parseInt(StrNo.substr(5, 1)) * 4;
  10. a = a + parseInt(StrNo.substr(6, 1)) * 2 + parseInt(StrNo.substr(7, 1)) * 1 + parseInt(StrNo.substr(8, 1)) * 6;
  11. a = a + parseInt(StrNo.substr(9, 1)) * 3 + parseInt(StrNo.substr(10, 1)) * 7 + parseInt(StrNo.substr(11, 1)) * 9;
  12. a = a + parseInt(StrNo.substr(12, 1)) * 10 + parseInt(StrNo.substr(13, 1)) * 5 + parseInt(StrNo.substr(14, 1)) * 8;
  13. a = a + parseInt(StrNo.substr(15, 1)) * 4 + parseInt(StrNo.substr(16, 1)) * 2;
  14. b = a % 11;
  15. if (b == 2)
  16. c = StrNo.substr(17, 1).toUpperCase(); //转为大写X
  17. else
  18. c = parseInt(StrNo.substr(17, 1));
  19. switch (b) {
  20. case 0:
  21. if (c != 1)
  22. return false;
  23. break;
  24. case 1:
  25. if (c != 0)
  26. return false;
  27. break;
  28. case 2:
  29. if (c != "X")
  30. return false;
  31. break;
  32. case 3:
  33. if (c != 9)
  34. return false;
  35. break;
  36. case 4:
  37. if (c != 8)
  38. return false;
  39. break;
  40. case 5:
  41. if (c != 7)
  42. return false;
  43. break;
  44. case 6:
  45. if (c != 6)
  46. return false;
  47. break;
  48. case 7:
  49. if (c != 5)
  50. return false;
  51. break;
  52. case 8:
  53. if (c != 4)
  54. return false;
  55. break;
  56. case 9:
  57. if (c != 3)
  58. return false;
  59. break;
  60. case 10:
  61. if (c != 2)
  62. return false;
  63. }
  64. }
  65. else //15位身份证号
  66. {
  67. if (!isInteger(StrNo))
  68. return false;
  69. }
  70. switch (StrNo.length) {
  71. case 15:
  72. if (isValidDate("19" + StrNo.substr(6, 2), StrNo.substr(8, 2), StrNo.substr(10, 2)))
  73. return true;
  74. else
  75. return false;
  76. case 18:
  77. if (isValidDate(StrNo.substr(6, 4), StrNo.substr(10, 2), StrNo.substr(12, 2)))
  78. return true;
  79. else
  80. return false;
  81. }
  82. return false
  83. }
  84. function isInteger(str) {
  85. if (/[^\d]+$/.test(str)) {
  86. return false;
  87. }
  88. return true;
  89. }
  90. function isValidDate(iY, iM, iD) {
  91. var a = new Date(iY, iM - 1, iD);
  92. var y = a.getFullYear();
  93. var m = a.getMonth() + 1;
  94. var d = a.getDate();
  95. if (y != iY || m != iM || d != iD)
  96. return false;
  97. return true
  98. }
  99. export default isIDCard;