黑马程序员技术交流社区

标题: 如何检验用户输入的身份证号码是合法的? [打印本页]

作者: 肖云    时间: 2012-6-10 01:37
标题: 如何检验用户输入的身份证号码是合法的?
让用户输入身份证号码,如何检验是合法的.
强制转换为int类型就会出错,因为超出了int数据范围.
作者: 王继光    时间: 2012-6-10 09:03
身份证号码,一般都是 18位 整数, 这样的话,  就目前的 整数类型, 我们要 18 位有效数字 的话 , 好像除了 decimal 其余的数都没有这个精度。。
所以,我觉得不应该把 身份证号码考虑为 整数 类型, 而应该考虑为字符串类型,, 然后,我们可以把 此 字符串分为 3部分, 分别检验 ;;
前2部分 必须能转化为 整数类型,, 最后一部分的 最后一位数 允许 为X,, 这样应该就能解决你的问题了。
作者: 钟广雄    时间: 2012-6-10 09:40
{:soso_e136:}不用把十八位数字转换成int呀,
判断长度,直接判断字符长度 string.length   
分别想要判断地区 、出生年月日、还有那个啥排序的、男的女的,
就用string的相关函数截取string部分再转换成int进行判断

作者: 王国文    时间: 2012-6-10 09:45
你身份证都是用string类型,还有手机号码也是  ,int是9位,身份证转成int  对比没有实际意思
作者: 孙毅    时间: 2012-6-10 09:45
本帖最后由 孙毅 于 2012-6-10 09:47 编辑

身份证的数据类型使用字符串即可,对它没有计算操作不必转换为int
如何检验是否合法,这里可以使用正则表达式,例(js):
<script type="text/javascript">
        window.onload = function () {
            var regId = /\d{17}[\d|X]|\d{15}/;
            if (regId.test("身份证号")) {
                alert("验证成功");
            }
            else {
                alert("验证失败");
            }
        }
    </script>
具体元字符含义到网上查一下相关解释
作者: 牛景亮    时间: 2012-6-10 10:17
身份证号一般都是字符串类型,
验证匹配的话,用正则表达式
作者: 李朋霏    时间: 2012-7-16 23:21
用正则表达式 ^\d[0,9]{18}$
作者: 李朋霏    时间: 2012-7-17 00:08
上面的有误,用这个:^d{17}[\d|X]|\d{15}$
作者: 肖琦    时间: 2012-7-17 08:33
同样是讨论身份证号码的

链接上是另一个帖子的,上面有讨论过;

其实搞清楚身份证的验证,就是要了解身份证的组成,以及效验码的算法,以上帖子都有说过,可以参考。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2