Regexp-Utils:身份证号校验
ylbtech-Regexp-Utils:身份证号校验 |
1.返回顶部 |
- var idCardNoUtil = {
- /*省,直辖市代码表*/
- provinceAndCitys: {
- 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: "国外"
- },
- /*每位加权因子*/
- powers: ["7", "9", "10", "5", "8", "4", "2", "1", "6", "3", "7", "9", "10", "5", "8", "4", "2"],
- /*第18位校检码*/
- parityBit: ["1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"],
- /*性别*/
- genders: { male: "男", female: "女" },
- /*校验地址码*/
- checkAddressCode: function (addressCode) {
- var check = /^[1-9]\d{5}$/.test(addressCode);
- if (!check) return false;
- if (idCardNoUtil.provinceAndCitys[parseInt(addressCode.substring(0, 2))]) {
- return true;
- } else {
- return false;
- }
- },
- /*校验日期码*/
- checkBirthDayCode: function (birDayCode) {
- var check = /^[1-9]\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))$/.test(birDayCode);
- if (!check) return false;
- var yyyy = parseInt(birDayCode.substring(0, 4), 10);
- var mm = parseInt(birDayCode.substring(4, 6), 10);
- var dd = parseInt(birDayCode.substring(6), 10);
- var xdata = new Date(yyyy, mm - 1, dd);
- if (xdata > new Date()) {
- return false;//生日不能大于当前日期
- } else if ((xdata.getFullYear() == yyyy) && (xdata.getMonth() == mm - 1) && (xdata.getDate() == dd)) {
- return true;
- } else {
- return false;
- }
- },
- /*计算校检码*/
- getParityBit: function (idCardNo) {
- var id17 = idCardNo.substring(0, 17);
- /*加权 */
- var power = 0;
- for (var i = 0; i < 17; i++) {
- power += parseInt(id17.charAt(i), 10) * parseInt(idCardNoUtil.powers[i]);
- }
- /*取模*/
- var mod = power % 11;
- return idCardNoUtil.parityBit[mod];
- },
- /*验证校检码*/
- checkParityBit: function (idCardNo) {
- var parityBit = idCardNo.charAt(17).toUpperCase();
- if (idCardNoUtil.getParityBit(idCardNo) == parityBit) {
- return true;
- } else {
- return false;
- }
- },
- /*校验15位或18位的身份证号码*/
- checkIdCardNo: function (idCardNo) {
- //15位和18位身份证号码的基本校验
- var check = /^\d{15}|(\d{17}(\d|x|X))$/.test(idCardNo);
- if (!check) return false;
- //判断长度为15位或18位
- if (idCardNo.length == 15) {
- return idCardNoUtil.check15IdCardNo(idCardNo);
- } else if (idCardNo.length == 18) {
- return idCardNoUtil.check18IdCardNo(idCardNo);
- } else {
- return false;
- }
- },
- //校验15位的身份证号码
- check15IdCardNo: function (idCardNo) {
- //15位身份证号码的基本校验
- var check = /^[1-9]\d{7}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}$/.test(idCardNo);
- if (!check) return false;
- //校验地址码
- var addressCode = idCardNo.substring(0, 6);
- check = idCardNoUtil.checkAddressCode(addressCode);
- if (!check) return false;
- var birDayCode = '19' + idCardNo.substring(6, 12);
- //校验日期码
- return idCardNoUtil.checkBirthDayCode(birDayCode);
- },
- //校验18位的身份证号码
- check18IdCardNo: function (idCardNo) {
- //18位身份证号码的基本格式校验
- var check = /^[1-9]\d{5}[1-9]\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}(\d|x|X)$/.test(idCardNo);
- if (!check) return false;
- //校验地址码
- var addressCode = idCardNo.substring(0, 6);
- check = idCardNoUtil.checkAddressCode(addressCode);
- if (!check) return false;
- //校验日期码
- var birDayCode = idCardNo.substring(6, 14);
- check = idCardNoUtil.checkBirthDayCode(birDayCode);
- if (!check) return false;
- //验证校检码
- return idCardNoUtil.checkParityBit(idCardNo);
- },
- formateDateCN: function (day) {
- var yyyy = day.substring(0, 4);
- var mm = day.substring(4, 6);
- var dd = day.substring(6);
- return yyyy + '-' + mm + '-' + dd;
- },
- //获取信息
- getIdCardInfo: function (idCardNo) {
- var idCardInfo = {
- gender: "", //性别
- birthday: "", // 出生日期(yyyy-mm-dd)
- province: idCardNoUtil.provinceAndCitys[parseInt(idCardNo.substring(0, 2))]
- };
- if (idCardNo.length == 15) {
- var aday = '19' + idCardNo.substring(6, 12);
- idCardInfo.birthday = idCardNoUtil.formateDateCN(aday);
- if (parseInt(idCardNo.charAt(14)) % 2 == 0) {
- idCardInfo.gender = idCardNoUtil.genders.female;
- } else {
- idCardInfo.gender = idCardNoUtil.genders.male;
- }
- } else if (idCardNo.length == 18) {
- var aday = idCardNo.substring(6, 14);
- idCardInfo.birthday = idCardNoUtil.formateDateCN(aday);
- if (parseInt(idCardNo.charAt(16)) % 2 == 0) {
- idCardInfo.gender = idCardNoUtil.genders.female;
- } else {
- idCardInfo.gender = idCardNoUtil.genders.male;
- }
- }
- return idCardInfo;
- },
- /*18位转15位*/
- getId15: function (idCardNo) {
- if (idCardNo.length == 15) {
- return idCardNo;
- } else if (idCardNo.length == 18) {
- return idCardNo.substring(0, 6) + idCardNo.substring(8, 17);
- } else {
- return null;
- }
- },
- /*15位转18位*/
- getId18: function (idCardNo) {
- if (idCardNo.length == 15) {
- var id17 = idCardNo.substring(0, 6) + '19' + idCardNo.substring(6);
- var parityBit = idCardNoUtil.getParityBit(id17);
- return id17 + parityBit;
- } else if (idCardNo.length == 18) {
- return idCardNo;
- } else {
- return null;
- }
- }
- };
- utils.idCardNoUtil = window.idCardNoUtil = idCardNoUtil;
- if (!utils.idCardNoUtil.checkIdCardNo($("#CardNO").val())) {
- mui.toast("输入身份证格式不正确,请检查!");
- return false;
- }
2.返回顶部 |
3.返回顶部 |
4.返回顶部 |
5.返回顶部 |
6.返回顶部 |
![]() |
作者:ylbtech 出处:http://ylbtech.cnblogs.com/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 |
Regexp-Utils:身份证号校验的更多相关文章
- 使用 python 进行身份证号校验
使用 python 代码进行身份证号校验 先说,还有很多可以优化的地方. 1.比如加入15位身份证号的校验,嗯哼,15位的好像没有校验,那就只能提取个出生年月日啥的了. 2.比如判断加入地址数据库,增 ...
- 身份证号校验原理及JavaScript实现
在网站中,总有各种各样的表单,用户使用表单来向服务器发送数据,进行交互. 然而,代代相传的经验是,永远不要信任用户的输入,一定要对数据进行验证.如果使用不经验证的表单,轻则会有大量无效提交 ...
- Javascript 香港身份证号校验
<!DOCTYPE html> <html> <head> <title>香港身份证校验码计算</title> </head> ...
- java身份证号校验
package com.pt.modules.contract.utils; import java.text.ParseException; import java.text.SimpleDateF ...
- 锋利的js之验证身份证号
我们在做互联网网站时,注册个人资料时,经常要用到身份证号,我们需要对身份证进验证,不然别人随便输个号码就通过,让你感觉这个网站做得很shit. 身份证号是有规则的. 结构和形式 1.号码的结构 公民 ...
- Java实现身份证号码校验
二话不说,直接上代码. package hope.identitycodecheck.demo; import java.text.DateFormat; import java.text.Simpl ...
- JS校验身份证号的合法性
前端表单中有身份证号的校验,下边是用JS来校验身份证号的合法性. 中国居民身份证号码编码规则 第一.二位表示省(自治区.直辖市.特别行政区). 第三.四位表示市(地级市.自治州.盟及国家直辖市所属市辖 ...
- java中身份证号和的银行卡的深度校验
一: 身份证号: package com.mobile.utils; import java.text.SimpleDateFormat; import java.util.Calendar; imp ...
- 身份证号正则校验(js校验+JAVA校验)
js校验身份证号[15位和18位] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 3 ...
随机推荐
- IE浏览器缓存导致Ajax请求失败
在IE浏览器中通过Ajax请求后台的数据,如果Page请求是postback类型的,可能会导致Ajax请求失败的问题 我们都知道ajax能提高页面载入的速度主要的原因是通过ajax减少了重复数据的载入 ...
- SqlServer数据库基本用法
. 利用T-SQL语句,创建数据库(工资管理数据库),要求如下: 数据库初始大小:3MB:文件大小按兆字节3MB自动增长,增长限制为:15MB: 数据库日志文件初始大小:1MB: 文件大小按百分比5% ...
- Android 解决toolbar标题不显示问题
问题原因:toolbar的兼容性有问题 解决办法: setSupportActionBar(toolbar); toolbar使用步骤: 1.编写menu.xml 为了保持兼容需要这样写: andro ...
- 在MyEclipse中使用debug模式
转:http://blog.csdn.net/competerh_programing/article/details/6773371 1, 首先在一个java文件中设断点,然后运行,当程序走到断点 ...
- aes加密算法的一个问题
百度“delphi aes”出来的结果,千篇一律,都是相互转载,但是没有人发现EldoS, Alexander Ionov于1998-2001写的ElAes.pas代码,存在一个问题. 相同的key和 ...
- 杭电2061WA 01
#include<stdio.h> struct mem { char s[50]; double c; double f; }; int main() { struct mem x[60 ...
- (转)RabbitMQ学习之路由(java)
http://blog.csdn.net/zhu_tianwei/article/details/40887755 参考:http://blog.csdn.NET/lmj623565791/artic ...
- CDR中是否有图层,如何调出图层面板?
什么是图层?如果有点PS基础的同学,应该会非常清楚这个概念,它是构成图像的重要组成单位,许多效果可以通过对层的直接操作而得到,并在当前图层操作时候不会影响到其他图层,所以在绘图的过程中有着很重要的作用 ...
- Django01 web http 基础
一.内容回顾 1.python基础 2.网络编程 3.并发编程 4.前端 5.数据库(MySQL) 二.今日概要 1.了解Web应用程序的本质 2.Django简介及安装使用 三.今日详细 1.最简单 ...
- 自定义View(未完待续)
一.概述 android提供了丰富的系统控件,但在实际开发中,这些控件依然不能完全覆盖我们的需求.有时,我们需要自定义控件来满足一些个性化产品需求.自定义控件,主要有以下三种方式: 继承现有控件,对其 ...