身份证号码的正则表达式

<!DOCTYPE HTML><html><head>    <meta charset="utf-8">    <title>身份证号码的正则表达式及验证详解(JavaScript,Regex)</title></head><body><div id="main"></div><script>    console.log = function(val) {        document.getElementById("main").innerHTML += val +"<br />";    }    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;    }    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;    }    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;    }    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("160105194912310029"));</script></body></html>

原文地址:https://www.cnblogs.com/feixiablog/p/9277214.html

时间: 2024-10-12 14:38:45

身份证号码的正则表达式的相关文章

身份证号码的正则表达式及验证详解(JavaScript,Regex)

简言 在做用户实名验证时,常会用到身份证号码的正则表达式及校验方案.本文列举了两种验证方案,大家可以根据自己的项目实际情况,选择适合的方案. 身份证号码说明 居民身份证号码,正确.正式的称谓应该是"公民身份号码".根据[中华人民共和国国家标准 GB 11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码. 以北京市朝阳区一女性身份证号码为

身份证号码验证正则表达式及用法(包括:位数、规则等)

//sfz.js页面function CheckIDCard(StrNumber) { //判断身份证号码格式函数 //公民身份号码是特征组合码, //排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码 //身份证号码长度判断 if(StrNumber.length<15||StrNumber.length==16||StrNumber.length==17||StrNumber.length>18) { return {"code"

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)) 天

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

function isCardNo(card) { // 身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/; if(reg.test(card) === false) { alert("身份证输入不合法"); return  false; } } 最近的项目中用的需要调用实名认证的接口,实名认证接口价格相比短信而言高了不是几

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

function isCardNo(card) { // 身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/; if(reg.test(card) === false) { alert("身份证输入不合法"); return  false; } }

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

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

java验证身份证号码是否有效源代码

1.描述 用java语言判断身份证号码是否有效,地区码.出身年月.校验码等验证算法 2.源代码 package test; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.GregorianCalendar; import java.util.Hashtable; import java.util.Scanner; imp

详细验证身份证号码规则和姓名(汉字)的java代码

一.验证汉字的正则表达式 /** 是否是汉字的正则 */ private String regexIsHanZi = "[\\u4e00-\\u9fa5]+"; * @param str要匹配的字符串 * @param reg 正则 public static boolean matchRegular(String str, String reg) { Pattern pattern = Pattern.compile(reg); Matcher matcher = pattern.m

java验证身份证号码是否有效源代码 wn25的头像 wn25 23 2015-01-04 20:09 6 基本信息 Java &#215; 1 浏览

原文:http://www.open-open.com/code/view/1420373343171 1.描述 用java语言判断身份证号码是否有效,地区码.出身年月.校验码等验证算法 2.源代码 package test; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.GregorianCalendar; impor