js身份证号验证

来源:互联网 发布:红警2点网络进不去 编辑:程序博客网 时间:2024/05/22 05:31
/**  * 身份证15位编码规则:dddddd yymmdd xx p   * dddddd:地区码   * yymmdd: 出生年月日   * xx: 顺序类编码,无法确定   * p: 性别,奇数为男,偶数为女  * <p />  * 身份证18位编码规则:dddddd yyyymmdd xxx y   * dddddd:地区码   * yyyymmdd: 出生年月日   * xxx:顺序类编码,无法确定,奇数为男,偶数为女   * y: 校验码,该位数值可通过前17位计算获得  * <p />  * 18位号码加权因子为(从右到左) Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 ]  * 验证位 Y = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ]   * 校验位计算公式:Y_P = mod( ∑(Ai×Wi),11 )   * i为身份证号码从右往左数的 2...18 位; Y_P为脚丫校验码所在校验码数组位置  *   */var Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 ];// 加权因子  var ValideCode = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ];// 身份证验证位值.10代表X  function IdCardValidate(idCard) {idCard = trim(idCard.replace(/ /g, ""));if (idCard.length == 15) {return isValidityBrithBy15IdCard(idCard);} else if (idCard.length == 18) {var a_idCard = idCard.split("");// 得到身份证数组  if (isValidityBrithBy18IdCard(idCard)&& isTrueValidateCodeBy18IdCard(a_idCard)) {return true;} else {return false;}} else {return false;}}/**  * 判断身份证号码为18位时最后的验证位是否正确  * @param a_idCard 身份证号码数组  * @return  */function isTrueValidateCodeBy18IdCard(a_idCard) {var sum = 0; // 声明加权求和变量  if (a_idCard[17].toLowerCase() == 'x') {a_idCard[17] = 10;// 将最后位为x的验证码替换为10方便后续操作  }for ( var i = 0; i < 17; i++) {sum += Wi[i] * a_idCard[i];// 加权求和  }valCodePosition = sum % 11;// 得到验证码所位置  if (a_idCard[17] == ValideCode[valCodePosition]) {return true;} else {return false;}}/**  * 通过身份证判断是男是女  * @param idCard 15/18位身份证号码   * @return 'female'-女、'male'-男  */function maleOrFemalByIdCard(idCard) {idCard = trim(idCard.replace(/ /g, ""));// 对身份证号码做处理。包括字符间有空格。  if (idCard.length == 15) {if (idCard.substring(14, 15) % 2 == 0) {return 'female';} else {return 'male';}} else if (idCard.length == 18) {if (idCard.substring(14, 17) % 2 == 0) {return 'female';} else {return 'male';}} else {return null;}}/**  * 验证18位数身份证号码中的生日是否是有效生日  * @param idCard 18位书身份证字符串  * @return  */function isValidityBrithBy18IdCard(idCard18) {var year = idCard18.substring(6, 10);var month = idCard18.substring(10, 12);var day = idCard18.substring(12, 14);var temp_date = new Date(year, parseFloat(month) - 1, parseFloat(day));// 这里用getFullYear()获取年份,避免千年虫问题  if (temp_date.getFullYear() != parseFloat(year)|| temp_date.getMonth() != parseFloat(month) - 1|| temp_date.getDate() != parseFloat(day)) {return false;} else {return true;}}/**  * 验证15位数身份证号码中的生日是否是有效生日  * @param idCard15 15位书身份证字符串  * @return  */function isValidityBrithBy15IdCard(idCard15) {var year = idCard15.substring(6, 8);var month = idCard15.substring(8, 10);var day = idCard15.substring(10, 12);var temp_date = new Date(year, parseFloat(month) - 1, parseFloat(day));var tmp_year = temp_date.getFullYear().toString().substr(2, 2);if (parseFloat(tmp_year) != parseFloat(year)|| temp_date.getMonth() != parseFloat(month) - 1|| temp_date.getDate() != parseFloat(day)) {return false;} else {return true;}}//去掉字符串头尾空格  function trim(str) {return str.replace(/(^\s*)|(\s*$)/g, "");}


js验证身份证号_欢迎测试

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 金融公司倒闭欠的钱怎么办 买车贷款被骗了怎么办 定投终止后钱怎么办 受到小贷公司催款威胁怎么办 合同保证金单据丢了怎么办 公司注销期间发现欠税怎么办 公司注销后银行账户怎么办 注销公司营业执照和公章丢失怎么办 工商核名过期了怎么办 核名后的许可没办下来怎么办 重庆公司核名有同名的怎么办 新电视不全屏怎么办左右有黑边 所学类别找不到音乐表演怎么办 公司口头通知不续签合同怎么办 雪纺衬衣皱了怎么办 狗打架受伤怎么办泰迪 大狗打架破了怎么办 舌头上长溃疡怎么办吃什么药 悠悠球不回弹怎么办啊 围棋遇到对方不停围堵怎么办? s围棋业余四段想提升怎么办 wps禁止创建分享链接怎么办 驾驶人开车违章不认可怎么办 京东白条退货分期服务费怎么办 新车年检标丢了怎么办 异地违章罚单丢了怎么办 异地现场违章罚单丢了怎么办 新车没有牌照过停车杆怎么办 驾照换证时间过了怎么办 杭州告知单丢了怎么办 电工证过了复审日期怎么办 大人有居住证小孩没有怎么办 异地补办身份证没有暂住证怎么办 挂科了心里难受怎么办 c1升b2考不过怎么办 b2驾照扣了1分怎么办 红绿色盲驾考怎么办 驾驶证忘带被交警查了怎么办 车子被扣45分怎么办 驾照被扣在外省交警支队怎么办 从渭南把驾照转到西安怎么办