找回密码
 注册成为天翎用户
查看: 314|回复: 2

[已解决] 调用身份证校验的方法是什么

[复制链接]
上海中汇 发表于 2021-3-30 09:25:24 | 显示全部楼层 |阅读模式
本帖最后由 问题汇总专家 于 2021-4-6 10:58 编辑

【myApps/OBPM版本号】:v4.4- sp XX
【浏览器类型】:Chrome/其他
【联系方式-QQ】:3063921310
【联系电话】:
【问题描述】:在做一个多重判断,现在不知道 系统身份证校验 的方法是什么 火线求救
smart 发表于 2021-3-30 17:19:07 | 显示全部楼层
你可以把写代码写到函数库 然后在你方法里面调用函数库的方法
  1. /**
  2. 身份证号合法性验证 支持15位和18位身份证号、支持地址编码、出生日期、校验位验证
  3. **/
  4. function IdentityCodeValid(code) {
  5.    
  6.     var city = {
  7.         11: "北京",
  8.         12: "天津",
  9.         13: "河北",
  10.         14: "山西",
  11.         15: "内蒙古",
  12.         21: "辽宁",
  13.         22: "吉林",
  14.         23: "黑龙江",
  15.         31: "上海",
  16.         32: "江苏",
  17.         33: "浙江",
  18.         34: "安徽",
  19.         35: "福建",
  20.         36: "江西",
  21.         37: "山东",
  22.         41: "河南",
  23.         42: "湖北",
  24.         43: "湖南",
  25.         44: "广东",
  26.         45: "广西",
  27.         46: "海南",
  28.         50: "重庆",
  29.         51: "四川",
  30.         52: "贵州",
  31.         53: "云南",
  32.         54: "西藏",
  33.         61: "陕西",
  34.         62: "甘肃",
  35.         63: "青海",
  36.         64: "宁夏",
  37.         65: "新疆",
  38.         71: "台湾",
  39.         81: "香港",
  40.         82: "澳门",
  41.         91: "国外"
  42.     };
  43.     var tip = "";
  44.     var pass = true;
  45.     //验证身份证格式(6位地区编码,8位出生日期,3位顺序号,1位校验位)
  46.     if (!code || !/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i.test(code)) {
  47.         tip = "身份证号格式错误";
  48.         return tip;
  49.         pass = false;
  50.     } else if (!city[code.substr(0, 2)]) {
  51.         tip = "地址编码错误";
  52.         pass = false;
  53.         return tip;
  54.     } else {
  55.         //18位身份证需要验证最后一位校验位
  56.         if (code.length == 18) {
  57.             code = code.split('');
  58.             //∑(ai×Wi)(mod 11)
  59.             //加权因子
  60.             var factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
  61.             //校验位
  62.             var parity = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2];
  63.             var sum = 0;
  64.             var ai = 0;
  65.             var wi = 0;
  66.             for (var i = 0; i < 17; i++) {
  67.                 ai = code[i];
  68.                 wi = factor[i];
  69.                 sum += ai * wi;
  70.             }
  71.             var last = parity[sum % 11];
  72.             if (parity[sum % 11] != code[17]) {
  73.                 tip = "校验位错误";
  74.                 pass = false;
  75.                 return tip;
  76.             }
  77.         }
  78.     }

  79. }
复制代码
回复

使用道具 举报

问题汇总专家 发表于 2021-4-6 10:57:53 | 显示全部楼层
关于您所提出的问题,目前同事这边已经给出出解决方法了哦,由于该帖楼主超过7天未响应,故该贴状态改为"已解决",后续如有其他问题可重新发帖或在我们的技术QQ群发出响应,我们将为您安排技术同事解答哟~~
回复

使用道具 举报

本版积分规则

手机版|天翎MyApps技术社区 ( 粤ICP备11093750号 )

GMT+8, 2026-8-14 15:30

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表