身份证号码验证-支持新的带x身份证
Calchas 发表于 2008, December 23, 1:55 PM
支持新身份证,支持带 x 的身份证
但是我测试 15位身份证的检查不正确。
JavaScript代码
-
- function isIdCardNo(num)
- {
- var factorArr = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);
- var error;
- var varArray = new Array();
- var intValue;
- var lngProduct = 0;
- var intCheckDigit;
- var intStrLen = num.length;
- var idNumber = num;
-
- if ((intStrLen != 15) && (intStrLen != 18)) {
-
-
-
- return false;
- }
-
- for(i=0;i<intStrLen;i++) {
- varArray[i] = idNumber.charAt(i);
- if ((varArray[i] < '0' || varArray[i] > '9') && (i != 17)) {
-
-
-
- return false;
- } else if (i < 17) {
- varArray[i] = varArray[i]*factorArr[i];
- }
- }
- if (intStrLen == 18) {
-
- var date8 = idNumber.substring(6,14);
- if (checkDate(date8) == false) {
-
-
- return false;
- }
-
- for(i=0;i<17;i++) {
- lngProduct = lngProduct + varArray[i];
- }
-
- intCheckDigit = 12 - lngProduct % 11;
- switch (intCheckDigit) {
- case 10:
- intCheckDigit = 'X';
- break;
- case 11:
- intCheckDigit = 0;
- break;
- case 12:
- intCheckDigit = 1;
- break;
- }
-
- if (varArray[17].toUpperCase() != intCheckDigit) {
-
-
- return false;
- }
- }
- else{
-
- var date6 = idNumber.substring(6,12);
- if (checkDate(date6) == false) {
-
- return false;
- }
- }
-
- return true;
- }
-
- function checkDate(date)
- {
- return true;
- }
-
-
- if(Trim(document.getElementById("IDcard").value)=="")
- {
- alert("必须填写身份证号");
- document.getElementById("IDcard").focus();
- return false;
- }
- if(!isIdCardNo(document.getElementById("IDcard").value))
- {
- alert("必须填写正确的身份证号");
- document.getElementById("IDcard").focus();
- return false;
- }
发表评论:( 你的参与是我最大的动力! )
2009, December 2, 10:06 AM
正则表达式的语意上更简练,复杂的字符验证最好用正则。