18位身份证号验证及信息获取

止乎于分享!

IDCode18 = {
    validate: function (value) {
        if (value.length != 18) return false;
        var value = value.toLowerCase();
        var sum = 0, v = ‘10x98765432‘, w = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2], a = ‘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‘;
        var re = value.match(/^(\d{2})\d{4}(\d{4})(\d{2})(\d{2})\d{3}[x\d]$/);
        if (re == null || a.indexOf(re[1]) < 0) return false;
        if (!this._validateDate(re[2], re[3], re[4])) return false;
        for (var i = 0; i < 17; i++) sum += value.charAt(i) * w[i];
        return value.charAt(17) == v.charAt(sum % 11);
    },
    getBirth: function (value, fmt) {
        if (!this.validate(value)) return ‘‘;
        fmt = fmt || ‘yyyy-MM-dd‘;
        var y = value.substr(6, 4), m = value.substr(10, 2), d = value.substr(12, 2);
        return fmt.replace(‘yyyy‘, y).replace(‘MM‘, m).replace(‘M‘, parseInt(m, 10)).replace(‘dd‘, d).replace(‘d‘, parseInt(d, 10));
    },
    getSex: function (value) {
        if (!this.validate(value)) return ‘‘;
        return value.substr(16, 1) % 2 == 0 ? ‘女‘ : ‘男‘;
    },
    _validateDate: function (y, m, d) {
        var dd = new Date(y, parseInt(m, 10) - 1, parseInt(d, 10));
        return dd.getFullYear() == y && dd.getMonth() + 1 == parseInt(m, 10) && dd.getDate() == parseInt(d, 10);
    }
}

18位身份证号验证及信息获取

时间: 2024-10-14 09:08:46

18位身份证号验证及信息获取的相关文章

中国居民18位身份证号验证方法,Java算法实现

public static boolean validate18Idcard(String idcard){ if(idcard == null ) { return false; } if(idcard.length()!=18) { return false; } char [] id =idcard.toCharArray(); int i, sum, n; for (sum = i = 0; i < 17; i++){ sum += ((1 << (17 - i)) % 11)

15/18位身份证号码验证的正则表达式总结(详细版)

前言 开发过程中,常常需要对一些输入信息进行有效性验证,使用正则表达式进行校验是最简单.效率最高的方式了,下面就来看看15/18位身份证号码验证的正则表达式吧. 介绍 xxxxxx yyyy MM dd 375 0     十八位 xxxxxx    yy MM dd   75 0     十五位 地区: [1-9]\d{5} 年的前两位: (18|19|([23]\d))            1800-2399 年的后两位: \d{2} 月份: ((0[1-9])|(10|11|12)) 天

正则表达式之完美18位身份证号

匹配18位身份证号,正则表达式如下: /^[1-9][0-9]{5}(19|20)[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|31)|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}([0-9]|x|X)$/ 说明:现在身份证号都已经是18位了,没必要再去考虑匹配15位. 18位身份证号组成:6位地区号+4位年+4位月日+3位编号+1位新生成编号 逻辑: 1

用DELPHI函数判断是否有效18位身份证号

uses DateUtils; const  IntMultiplication: Array[1..17] Of Integer=(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2); //函数名:IsRightID//参数:sID,身份证号码 (输入)//      sSex,性别       (输出)//      age,年龄        (输出)//返回值:sID是标准身份证号,返回OK,否则返回相应信息function IsRightID(sID:string

PHP隐藏身份证号中间四位(适用老版15位与18位身份证号)

// $message['idcard'] 为数据库查出来的身份证号码,若位数不符合身份证位数则会显示“身份证位数不正常” <? echo strlen($message['idcard'])==15?substr_replace($message['idcard'],"****",8,5):(strlen($message['idcard'])==18?substr_replace($message['idcard'],"****",8,7):"身

python操作redis之随机生成18位身份证号码

写一个随机生成身份证号的程序,输入多少条就产生多少个,?把产生完的数据写到redis里面,key用哈希类型?Xiaohei 410881198312031241 其中配置文件confsetting.py里的常量有: # 系统常量,包含: # LAST_NAME: 姓 # FIRST_NAME: 名 # STATE_CODE:全国大陆地区及编码 REDIS_IP = '172.16.2.163' RedisIp REDIS_PORT = 6379 REDIS_PASSWD = '222333' R

做一个牛XX的身份证号验证类(支持15位和18位)

原文:做一个牛XX的身份证号验证类(支持15位和18位) #region 是否合法的中国身份证号码 protected bool IsChineseID() { if (str.Length == 15) str = CidUpdate(str); if (str.Length == 18) { string strResult = CheckCidInfo(str); if (strResult == "非法地区" || strResult == "非法生日" |

js验证15位或18位身份证

本篇文章是本人在网上搜集了一些验证,然后又个人进行一定修改的关于身份证的验证,欢迎修改指正..... function IdCardValidateRule(idCard) { var tip;    //1.传入15位或者18位身份证号码,18位号码末位可以为数字或X    idCard = idCard.toUpperCase();    //2.去掉身份证的左右空格    idCard = trim(idCard);    //3.判断输入的身份证长度    if (!(/(^\d{15}

18位身份证验证--java实现,正则表达式

简单的正则表达式: (1)preg_match("/^(\d{18,18}|\d{15,15}|\d{17,17}x)$/",$id_card)(2)preg_match("/^(\d{6})(18|19|20)?(\d{2})([01]\d)([0123]\d)(\d{3}) (\d|X)?$/",$id_card)(3)preg_match("/(^\d{15}$/)|(\d{17}(?:\d|x|X)$/),$id_card) 2.复杂并且严格一些的