vue 身份证号 正则验证

var checkProv = function (val) {
                    var pattern = /^[1-9][0-9]/;
                    var provs = {
                        11: "北京",
                        12: "天津",
                        13: "河北",
                        14: "山西",
                        15: "内蒙古",
                        21: "辽宁",
                        22: "吉林",
                        23: "黑龙江 ",
                        31: "上海",
                        32: "江苏",
                        33: "浙江",
                        34: "安徽",
                        35: "福建",
                        36: "江西",
                        37: "山东",
                        41: "河南",
                        42: "湖北 ",
                        43: "湖南",
                        44: "广东",
                        45: "广西",
                        46: "海南",
                        50: "重庆",
                        51: "四川",
                        52: "贵州",
                        53: "云南",
                        54: "西藏 ",
                        61: "陕西",
                        62: "甘肃",
                        63: "青海",
                        64: "宁夏",
                        65: "新疆",
                        71: "中国台湾",
                        81: "中国香港",
                        82: "中国澳门"
                    };
                    if (pattern.test(val)) {
                        if (provs[val]) {
                            return true;
                        }
                    }
                    return false;
                }
                //输出 true,37是山东
                // console.log(checkProv(50),"1111111111111");
                //输出 false,16不存在
                // console.log(checkProv(16));
                var checkDate = function (val) {
                    var pattern = /^(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)$/;
                    if (pattern.test(val)) {
                        var year = val.substring(0, 4);
                        var month = val.substring(4, 6);
                        var date = val.substring(6, 8);
                        var date2 = new Date(year + "-" + month + "-" + date);
                        if (date2 && date2.getMonth() == (parseInt(month) - 1)) {
                            return true;
                        }
                    }
                    return false;
                }
                //输出 true
                // console.log(checkDate("20180212"));
                //输出 false 2月没有31日
                // console.log(checkDate("20180231"));
                var checkCode = function (val) {
                    var p =
                        /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
                    var factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
                    var parity = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2];
                    var code = val.substring(17);
                    if (p.test(val)) {
                        var sum = 0;
                        for (var i = 0; i < 17; i++) {
                            sum += val[i] * factor[i];
                        }
                        if (parity[sum % 11] == code.toUpperCase()) {
                            return true;
                        }
                    }
                    return false;
                }
                // 输出 true, 校验码相符
                // console.log(checkCode("11010519491231002X"));
                // 输出 false, 校验码不符
                // console.log(checkCode("110105194912310021"));
                var checkID = function (val) {
                    if (checkCode(val)) {
                        var date = val.substring(6, 14);
                        if (checkDate(date)) {
                            if (checkProv(val.substring(0, 2))) {
                                return true;
                            }
                        }
                    }
                    return false;
                }
                //输出 true
                // console.log(checkID("11010519491231002X"));
                //输出 false,校验码不符
                // console.log(checkID("110105194912310021"));
                //输出 false,日期码不符
                // console.log(checkID("110105194902310026"));
                //输出 false,地区码不符
                // console.log(checkID("230882198403151370"),"11111111111111111");

比较详细  自试有效

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值