前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >对身份证号码合法性的验证

对身份证号码合法性的验证

作者头像
源哥
发布2018-08-28 11:10:56
6820
发布2018-08-28 11:10:56
举报
文章被收录于专栏:源哥的专栏

对于身份证号码,经常有人只是判断身份证的位数是否为15或18位,是否全部都是数字,这种判断是错误的,因为18位身份证号码允许最后一位为X,不过必须根据特定的算法(最后一位为验证码),下面这段代码就是判断身份证号码是否合法的。

代码语言:javascript
复制
<script language="JavaScript">
function CheckAvailable(){
//获得所输入的身份证号码的值
var idcardno = document.AgtmngStaffForm.idcardno.value;

//判断身份证是否为15位或者18位,其中isNumber函数是判断值是否全部是数字,这里就不给出了
if ((idcardno == "")||(!(isNumber(idcardno))&&(idcardno.length == 15))||
         ((idcardno.length != 15)&&(idcardno.length != 18)))
{
    alert("身份证号码应是15或18位数字,请输入正确!");

    //将鼠标的焦点定位到身份证那个输入框中
    document.AgtmngStaffForm.idcardno.focus();
    return false;
}
else if (idcardno.length == 18)
{//对18位身份证的判断,18位允许最后一位为X,不过必须根据特定的算法
    var Wi = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);
 var Ai = new Array('1','0','X','9','8','7','6','5','4','3','2');
 
 if (idcardno.charAt(17) == 'x')
 {
  idcardno = idcardno.replace("x","X"); 
  document.AgtmngStaffForm.idcardno.value = idcardno;       
 }
 
 var checkDigit = idcardno.charAt(17);  
 var cardNoSum = 0;
      
 for (var i=0; i<idcardno.length-1; i++)
 {
  cardNoSum = cardNoSum + idcardno.charAt(i)*Wi[i];
    }

 var seq = cardNoSum%11;
 var getCheckDigit = Ai[seq]; 
 
 if (checkDigit != getCheckDigit)
 {
  alert("您的身份证号码输入有误!");
  document.AgtmngStaffForm.idcardno.focus();
  return false;
 }     
 return true;
}  
else
{
    return true;
}
}
</script>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2005年03月21日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档