# JavaScript 身份证的验证

**URL:** <https://www.isharkfly.com/t/javascript/8770>\
**Category:** 前端\
**Created:** [October 31, 2012, 2:48am UTC](https://www.isharkfly.com/t/javascript/8770 "2012-10-31T02:48:38Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![honeymoose](https://www.isharkfly.com/user_avatar/www.isharkfly.com/honeymoose/32/20796_2.png) [@honeymoose](https://www.isharkfly.com/u/honeymoose)\
**Post date:** [October 31, 2012, 2:48am UTC](https://www.isharkfly.com/t/javascript/8770/1 "2012-10-31T02:48:38Z")

</div>

`function isIdCardNo(num)
{
    if (isNaN(num)) {
        alert("输入的不是数字！");
        return false;
    }
    var len = num.length, re; 
    if (len == 15)
        re = new RegExp(/^(\d{6})()?(\d{2})(\d{2})(\d{2})(\d{3})$/);
    else if (len == 18)
        re = new RegExp(/^(\d{6})()?(\d{4})(\d{2})(\d{2})(\d{3})(\d)$/);
    else {
        alert("输入的数字位数不对！");
        return false;
    }
    var a = num.match(re);
    if (a != null)
    {
        if (len==15)
        {
            var D = new Date("19"+a[3]+"/"+a[4]+"/"+a[5]);
            var B = D.getYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5];
        }
        else
        {
            var D = new Date(a[3]+"/"+a[4]+"/"+a[5]);
            var B = D.getFullYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5];
        }
        if (!B) {
            alert("输入的身份证号 "+ a[0] +" 里出生日期不对！");
            return false;
        }
    }
    return true;
}
`
