`
羽风之扬
  • 浏览: 86447 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

js 校验身份证信息

 
阅读更多
angular.module('validationActions', [])
    .factory('clsIDCard', function() {
        // 构造函数,变量为15位或者18位的身份证号码
        function clsIDCard(CardNo) {
            this.Valid = false;
            this.ID15 = '';
            this.ID18 = '';
            this.Local = '';
            if (CardNo != null) this.SetCardNo(CardNo);
        }

        clsIDCard.prototype = {
            // 设置身份证号码,15位或者18位
            SetCardNo: function (CardNo) {
                this.ID15 = '';
                this.ID18 = '';
                this.Local = '';
                var pattern = '';
                CardNo = CardNo.replace(" ", "");
                var strCardNo;
                if (CardNo.length == 18) {
                    pattern = /^\d{17}(\d|x|X)$/;
                    if (pattern.exec(CardNo) == null) return;
                    strCardNo = CardNo.toUpperCase();
                } else {
                    pattern = /^\d{15}$/;
                    if (pattern.exec(CardNo) == null) return;
                    strCardNo = CardNo.substr(0, 6) + '19' + CardNo.substr(6, 9)
                    strCardNo += this.GetVCode(strCardNo);
                }
                this.Valid = this.CheckValid(strCardNo);
            },

            // 校验身份证有效性
            IsValid: function () {
                return this.Valid;
            },

            // 返回生日字符串,格式如下,1981-10-10
            GetBirthDate: function () {
                var BirthDate = '';
                if (this.Valid) BirthDate = this.GetBirthYear() + '-' + this.GetBirthMonth() + '-' + this.GetBirthDay();
                return BirthDate;
            },

            // 返回生日中的年,格式如下,1981
            GetBirthYear: function () {
                var BirthYear = '';
                if (this.Valid) BirthYear = this.ID18.substr(6, 4);
                return BirthYear;
            },

            // 返回生日中的月,格式如下,10
            GetBirthMonth: function () {
                var BirthMonth = '';
                if (this.Valid) BirthMonth = this.ID18.substr(10, 2);
                if (BirthMonth.charAt(0) == '0') BirthMonth = BirthMonth.charAt(1);
                return BirthMonth;
            },

            // 返回生日中的日,格式如下,10
            GetBirthDay: function () {
                var BirthDay = '';
                if (this.Valid) BirthDay = this.ID18.substr(12, 2);
                return BirthDay;
            },

            // 返回性别,1:男,0:女
            GetSex: function () {
                var Sex = '';
                if (this.Valid) Sex = this.ID18.charAt(16) % 2;
                return Sex;
            },

            // 返回15位身份证号码
            Get15: function () {
                var ID15 = '';
                if (this.Valid) ID15 = this.ID15;
                return ID15;
            },

            // 返回18位身份证号码
            Get18: function () {
                var ID18 = '';
                if (this.Valid) ID18 = this.ID18;
                return ID18;
            },

            // 返回所在省,例如:上海市、浙江省
            GetLocal: function () {
                var Local = '';
                if (this.Valid) Local = this.Local;
                return Local;
            },

            GetVCode: function (CardNo17) {
                var Wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1];
                var Ai = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
                var cardNoSum = 0;
                for (var i = 0; i < CardNo17.length; i++) cardNoSum += CardNo17.charAt(i) * Wi[i];
                var seq = cardNoSum % 11;
                return Ai[seq];
            },

            CheckValid: function (CardNo18) {
                if (this.GetVCode(CardNo18.substr(0, 17)) != CardNo18.charAt(17)) return false;
                if (!this.IsDate(CardNo18.substr(6, 8))) return false;
                var aCity = {
                    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: "澳门",
                    91: "国外"
                };
                if (aCity[parseInt(CardNo18.substr(0, 2))] == null) return false;
                this.ID18 = CardNo18;
                this.ID15 = CardNo18.substr(0, 6) + CardNo18.substr(8, 9);
                this.Local = aCity[parseInt(CardNo18.substr(0, 2))];
                return true;
            },

            IsDate: function (strDate) {
                var r = strDate.match(/^(\d{1,4})(\d{1,2})(\d{1,2})$/);
                if (r == null) return false;
                var d = new Date(r[1], r[2] - 1, r[3]);
                return (d.getFullYear() == r[1] && (d.getMonth() + 1) == r[2] && d.getDate() == r[3]);
            }
        };

        return (clsIDCard);
    })
    .factory('cardValidations', ['clsIDCard', function(clsIDCard) {
        return function(idCard) {
            var checkFlag = new clsIDCard(idCard);
            if(!checkFlag.IsValid()) return false;
            else return true;
        };
    }]);

 

分享到:
评论

相关推荐

    正则表达式校验身份证号码

    ### 正则表达式校验身份证号码 #### 知识点概述 身份证号码在中国大陆具有唯一性,用于标识每一个公民的身份。身份证号码分为15位和18位两种格式,其中18位号码是在15位基础上增加了一个4位出生年份以及一位校验码...

    校验身份证号的js代码

    这是一段校验身份证号的js。

    js校验身份证号和银行卡号

    提供的"js校验身份证号"和"js校验银行卡号"文件可能包含了这些更复杂的实现。通过学习和理解这些代码,开发者可以更好地实现身份证号和银行卡号的验证功能,提高用户体验,同时确保数据的安全性和准确性。

    javascript校验身份证号码合法性

    使用javascript校验身份证号码的合法性 校验规则严格,很容易套用到项目中 套用例子详见http://blog.csdn.net/zcyhappy1314/article/details/8645189

    js加权校验身份证号

    js加权校验身份证号。

    javascript身份证校验

    用javascript 校验 身份证 的真实性

    JavaScript的form表单验证中的身份证校验.pdf

    ### JavaScript中的身份证校验知识点详解 #### 一、引言 在进行Web应用程序开发时,表单验证是一项非常重要的功能,它可以确保用户输入的数据格式正确并符合预期的要求。其中,身份证号码验证尤其重要,因为它涉及...

    js验证身份证格式

    本压缩包提供的资源“js验证身份证”包含了一个JavaScript函数,用于检查输入的身份证号码是否符合15位或18位身份证号码的规则。 首先,我们来了解一下中国身份证的基本结构。15位身份证号码在1999年后已经被18位...

    js+正则校验身份证号

    js+正则校验身份证号,包括地区、年份、月份、日期、及最主要的--末尾算法--校验

    身份证号校验

    java代码校验身份证号与js校验身份证号

    身份证校验JavaScript

    身份证校验JavaScript 身份证校验JavaScript 身份证校验JavaScript

    正则表达式 JS 身份证验证

    ### 正则表达式 JS 身份证验证详解 身份证号码在中国大陆地区具有唯一性,是个人身份的重要标识。为了确保信息安全和个人隐私保护,在很多应用系统中都需要对身份证号码进行合法性和格式性的验证。本文将详细阐述...

    jquery.validate 扩展身份证校验方法

    ### jQuery.validate 扩展身份证校验方法 在前端开发中,对用户输入的数据进行校验是非常重要的一步,它能够帮助开发者提高数据的准确性和安全性。本文将详细介绍如何使用`jQuery.validate`插件来扩展身份证号码的...

    h5校验身份证号码

    ### H5校验身份证号码知识点解析 #### 一、背景介绍 随着互联网技术的发展,越来越多的应用场景需要对用户的个人信息进行验证,其中身份证号码验证是非常常见的一种。身份证号码在中国大陆包括两种格式:15位和18位...

    js正则表达式校验数字、email、身份证号等

    js正则表达式校验数字、email、身份证号等

    JS验证身份证及获取地区功能示例

    在JavaScript(JS)中,身份证验证和获取地区信息是常见的前端功能,特别是在用户注册、信息录入等场景。这里我们将深入探讨如何使用JS实现这两个功能,同时结合字符串、数组和正则表达式等相关技术。 首先,身份证...

    js身份证校验

    身份证校验规则,支持15、18位身份证,支持地址编码、出生日期、校验位验证

    身份证js强校验

    身份证js强校验,简单实用,直接可以测试。

    JS验证身份证号码合法性.txt

    JS验证身份证号码合法性

Global site tag (gtag.js) - Google Analytics