PHP 身份證驗證功能代碼實現
var regIdCard = /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/; //如果通過該驗證,說明身份證格式正確,但準確性還需計算 if (regIdCard.test(identity)) { if (identity.length == 18) { var idCardWi = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); //將前17位加權因子保存在數組里 var idCardY = new Array(1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2); //這是除以11后,可能產生的11位余數、驗證碼,也保存成數組 var idCardWiSum = 0; //用來保存前17位各自乖以加權因子后的總和 for (var i = 0; i < 17; i++) { idCardWiSum += identity.substring(i, i + 1) * idCardWi[i]; } var idCardMod = idCardWiSum % 11;//計算出校驗碼所在數組的位置 var idCardLast = identity.substring(17);//得到最后一位身份證號碼 //如果等于2,則說明校驗碼是10,身份證號碼最后一位應該是X if (idCardMod == 2) { if (idCardLast == "X" || idCardLast == "x") { } else { layer.tips('身份證填寫有誤,請重新填寫','#identity'); return false; //alert("身份證號碼錯誤!"); } } else { //用計算出的驗證碼與最后一位身份證號碼匹配,如果一致,說明通過,否則是無效的身份證號碼 if (idCardLast == idCardY[idCardMod]) { } else { layer.tips('身份證填寫有誤,請重新填寫','#identity'); return false; //alert("身份證號碼錯誤!"); } } } } else { layer.tips('身份證填寫有誤,請重新填寫','#identity'); return false; }