身份证号码正则匹配-javascript

   function a(a, b) {
   return a.test(b)
 }
 function b(a) {
   return a = jQuery.trim(a), 0 == a.length
 }
 function c(a) {
   return !b(a)
 }   

    function t(c) {
        if (b(c))
            return !1;
        c = c.toUpperCase();
        var d = {
            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 : "国外"
        }, e = /(^\d{15}$)|(^\d{17}(\d|X)$)/;
        if (a(e, c) === !1)
            return !1;
        var f = c.substr(0, 2);
        if (void 0 == d[f])
            return !1;
        var g = c.length;
        if (15 == g) {
            var h = /^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/, i = c.match(h), j = s("19"
                    + i[2]), k = s(i[3]), l = s(i[4]), m = new Date("19" + j
                    + "/" + k + "/" + l);
            m.setFullYear(j), m.setMonth(k - 1), m.setDate(l);
            var n = new Date, o = n.getFullYear();
            if (m.getFullYear() != j || m.getMonth() + 1 != k
                    || m.getDate() != l)
                return !1;
            var p = o - j;
            if (!(p >= 3 && 100 >= p))
                return !1
        }
        if (18 == g) {
            var q = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/, i = c
                    .match(q), j = s(i[2]), k = s(i[3]), l = s(i[4]), m = new Date(j
                    + "/" + k + "/" + l);
            m.setFullYear(j), m.setMonth(k - 1), m.setDate(l);
            var n = new Date, o = n.getFullYear();
            if (m.getFullYear() != j || m.getMonth() + 1 != k
                    || m.getDate() != l)
                return !1;
            var p = o - j;
            if (!(p >= 3 && 100 >= p))
                return !1
        }
        if (15 == c.length) {
            var r, t = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8,
                    4, 2), u = new Array("1", "0", "X", "9", "8", "7", "6",
                    "5", "4", "3", "2"), v = 0;
            for (c = c.substr(0, 6) + "19" + c.substr(6, c.length - 6), r = 0; 17 > r; r++)
                v += c.substr(r, 1) * t[r];
            c += u[v % 11]
        }
        if (18 == c.length) {
            var r, w, t = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5,
                    8, 4, 2), u = new Array("1", "0", "X", "9", "8", "7", "6",
                    "5", "4", "3", "2"), v = 0;
            for (r = 0; 17 > r; r++)
                v += parseInt(c.substr(r, 1)) * t[r];
            if (w = u[v % 11], w != c.substr(17, 1))
                return !1
        }
        return !0
    }

  

时间: 2024-12-20 17:30:13

身份证号码正则匹配-javascript的相关文章

2-常用的正则匹配规则(会员名,真实姓名,邮箱,身份证号码,邮箱)

一.常见的正则匹配规则: 常见的匹配规则有 会员名,真实姓名,邮箱,身份证号码,邮箱等等 1.用户名 要求:会员名以汉字或字母开头,有3-18位数字,字母,下划线,汉字组成 正则:reg1 = /^[\u4e00-\u9fa5a-zA-Z][0-9a-zA-Z_\u4e00-\u9fa5]{2,17}/; 2.真实姓名 要求:真实姓名是2-6位的汉字组成 正则:reg2 = /^[\u4e00-\u9fa5][\u4e00-\u9fa5]{1,5}$/; 3.密码 要求:由6-16位的数字,字母

正则匹配:Email 密码强度 身份证 手机号 日期等

正则表达式,一个十分古老而又强大的文本处理工具,仅仅用一段非常简短的表达式语句,便能够快速实现一个非常复杂的业务逻辑.熟练地掌握正则表达式的话,能够使你的开发效率得到极大的提升.下面是在前端开发中经常使用到的20个正则表达式. 正则表达式经常被用于字段或任意字符串的校验,如下面这段校验基本日期格式的JavaScript代码: var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/; var r = fieldValue.match(reg); if(r

常用的JavaScript正则匹配规则代码收藏,很实用

收集一些常用的JavaScript正则表达式匹配规则,比如匹配电话号码.Email.中文字符.身份证号.邮编.QQ号.过滤空白行.匹配特定数字等.觉得这玩意是很有用的,只不过自己水平菜,老是自己写不出,看了这个文档,觉得心里踏实很多,用到正则匹配的时候,看下这个,相信为让你省不少时间.注:本正则不仅限于在JS中使用,其它语言也可以借鉴. 匹配特定数字: ^[1-9]\d*$ //匹配正整数 ^-[1-9]\d*$ //匹配负整数 ^-?[1-9]\d*$ //匹配整数 ^[1-9]\d*|0$

javascript正则匹配(转)

区号+座机号码+分机号码:regexp="^(0[0-9]{2,3}\-)?([2-9][0-9]{6,7})+(\-[0-9]{1,4})?$" 手机(中国移动手机号码):regexp="^((\(\d{3}\))|(\d{3}\-))?13[456789]\d{8}|15[89]\d{8}" 所有手机号码:regexp="^((\(\d{3}\))|(\d{3}\-))?13[0-9]\d{8}|15[89]\d{8}"(新添加了158,15

javascript身份证号码验证

https://github.com/oxcow/id-number-validator 版权声明: 关于<javascript身份证号码验证>的一切权利归作者@Leeyee所有: 非商用.非衍生; 如需转载需要注明来源于http://iyiguo.net/blog/2013/07/31/javascript-idcard-validate/ 15位身份证号码编码规则 18位身份证号码编码规则 校验规则 javascript编码实现 源代码 验证示例 15位身份证号码编码规则 ddddddyy

js正则实现二代身份证号码验证详解

js正则实现二代身份证号码验证详解 根据[中华人民共和国国家标准 GB 11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码. 地址码表示编码对象常住户口所在县(市.旗.区)的行政区划代码. 出生日期码表示编码对象出生的年.月.日,其中年份用四位数字表示,年.月.日之间不用分隔符. 顺序码表示同一地址码所标识的区域范围内,对同年.月.日出生的人员

javascript的正则匹配

前段时间需要用到比较多的js代码,当时有点搞不清test和match方法的区别,向百度求助,找到了这边关于正则匹配的博文,感谢作者分享. 原文地址[http://blog.sina.com.cn/s/blog_89da3e5101013giy.html] JS的正则表达式 rge.test(str) 检验目标对象中是否包含匹配模式,并相应的返回true或false   rge.source str.search(rge) 将返回一个整数值,指明这个匹配距离字符串开始的偏移位置.如果没有找到匹配,

javascript 正则匹配 提取全部 preg_match_all matchAll方法

javascript 提取所有的的方法,javascript中没有matchAll这个方法. 用while来实现类似 PHP 中的preg_match_all() :(by default7#zbphp.com) <!DOCTYPE html> <html> <head> <title></title> </head> <body> <select name="AgentIdP" id="

JavaScript - String对象正则匹配

String对象正则匹配 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8&quo