js验证15位或18位身份证
本篇文章是本人在网上搜集了一些验证,然后又个人进行一定修改的关于身份证的验证,欢迎修改指正。。。。。
function IdCardValidateRule(idCard) {
var tip;
//1.传入15位或者18位身份证号码,18位号码末位可以为数字或X
idCard = idCard.toUpperCase();
//2.去掉身份证的左右空格
idCard = trim(idCard);
//3.判断输入的身份证长度
if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(idCard))) {
tip = "身份证号长度不正确或不符合规定!";
return false;
}
//4.验证前两位城市编码是否正确
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(idCard.substr(0, 2))] == null) {
tip = "身份证号不正确或不符合规定!";
return false;
}
//5.验证出生日期和校验位
if (validId15(idCard) || validId18(idCard)) {
return true;
} else {
return false;
}
//身份证18位号码验证
function validId18(str) {
if (str.length != 18) return false;//长度验证
//1. 出生日期验证
re = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/);
//also re = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/;
arrSplit = str.match(re); //检查生日日期是否正确
if (arrSplit != null) {
if (!YearMonthDayValidate(arrSplit[2], arrSplit[3], arrSplit[4])) {
tip = "出生日期不正确";
return false;
}
}
else {
return false;
}
//2. 校验位验证
iW = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1);//加权因子
iSum = 0;
for (i = 0; i < 17; i++) {
iC = str.charAt(i);
iVal = parseInt(iC);
iSum += iVal * iW[i];
}
iJYM = iSum % 11;//取模
var sJYM = '';
//获取的模查找对应的校验码字符值
if (iJYM == 0) sJYM = "1";
else if (iJYM == 1) sJYM = "0";
else if (iJYM == 2) sJYM = "x";
else if (iJYM == 3) sJYM = "9";
else if (iJYM == 4) sJYM = "8";
else if (iJYM == 5) sJYM = "7";
else if (iJYM == 6) sJYM = "6";
else if (iJYM == 7) sJYM = "5";
else if (iJYM == 8) sJYM = "4";
else if (iJYM == 9) sJYM = "3";
else if (iJYM == 10) sJYM = "2";
var cCheck = str.charAt(17).toLowerCase();
if (cCheck != sJYM) {
return false;
}
return true;
}
//身份证15位(1984-2004)身份验证
function validId15(str) {
if (str.length != 15) return false;
//1. 出生日期验证
re = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/);
arrSplit = str.match(re); //检查生日日期是否正确
if (arrSplit != null) {
if (parseInt(arrSplit[2].substr(1)) > 0) {
arrSplit[2] = "19" + arrSplit[2];
} else {
arrSplit[2] = "20" + arrSplit[2]
}
if (!YearMonthDayValidate(arrSplit[2], arrSplit[3], arrSplit[4])) {
tip = "出生日期不正确";
return false;
}
} else {
return false;
}
return true;
}
//出生日期的年月日验证
function YearMonthDayValidate(year, month, day) {
year = parseInt(year); //年
month = parseInt(month);//月
day = parseInt(day);//日
//判断年,月,日是否为空
if (isNaN(year) || isNaN(month) || isNaN(day)) return false;
//判断月是否是在1-12月之间
if (month < 1 || month > 12) return false;
//返回当月的最后一天
var date = new Date(year, month, 0);
//判断是否超过天数范围
if (day < 1 || day > date.getDate()) return false;
return true;
}
//去掉字符串两端左右空格
function trim(strs) {
return strs.replace(/(^\s*)|(\s*$)/g, ""); //使用js正则表达式方法
}
}
js验证15位或18位身份证的更多相关文章
- Js验证15/18身份证
var vcity={ 11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古&quo ...
- 18位身份证验证--java实现,正则表达式
简单的正则表达式: (1)preg_match("/^(\d{18,18}|\d{15,15}|\d{17,17}x)$/",$id_card)(2)preg_match(&quo ...
- php验证18位身份证,准到必须输入正确的身份证号,
/** * 验证18位身份证(计算方式在百度百科有) * @param string $id 身份证 * return boolean */ function check_identity($id=' ...
- Java随机生成18位身份证号
package com.ihome.data; import java.text.SimpleDateFormat; import java.util.Calendar; import java.ut ...
- Java实现18位身份证校验代码
import java.util.Scanner; /** * 18位身份证校验 * @author [J.H] * */ public class Test { // 身份证校验 public st ...
- C#实现的18位身份证格式验证算法
18位身份证标准在国家质量技术监督局于1999年7月1日实施的GB11643-1999<公民身份号码>中做了明确的规定. GB11643-1999<公民身份号码>为GB1164 ...
- 18位身份证验证(Java)加入身份证输入验证是否满足18位代码(修订稿)
package day20181016; /** * 身份证的验证 34052419800101001X * */ import java.util.Scanner; public class Zuo ...
- 18位身份证验证(Java)
我的代码: package day20181016;/** * 身份证的验证 34052419800101001X * */import java.util.Scanner;public class ...
- js正则判断实现18位数字
js实现18位数字 var stuCardReg = /^[0-9]{18}/; var stuCard = $('.inp).val();//获取input框中的数值 if (!stuCardReg ...
随机推荐
- Normalize.css源码注释翻译&浏览器css兼容问题的理解
版本v5.0.0源码地址: https://necolas.github.io/normalize.css/5.0.0/normalize.css 翻译版: /*! normalize.css v5. ...
- Linux下Shadow socks的安装和配置
实在受不了在Windows下编程,所以自己就安装了一个Ubutun,公司用的FQ软件shadowsocks在Windows上用起来很简单很爽,但是在Ubutun上的安装和配置就没那么简单了,写下这篇文 ...
- Transparent Application Failover 透明应用切换
官方文档地址 http://docs.oracle.com/cd/E11882_01/network.112/e41945/advcfg.htm#NETAG455 About Transparent ...
- maven打包 bat自动化打包
maven打包,首先cd到项目根目录,如果想跳过测试阶段,可用:mvn package -DskipTests bat命令,说明start是打开文件夹的意思:e: cd E:\workspace\it ...
- php中json对象数据的输出转化
php中json对象数据的输出转化 public function get_my_now_citys(){ $datas=$this->_post('datas'); //前台js脚本传递给后端 ...
- phpExcel读取excel文件数据
require_once $_SERVER['DOCUMENT_ROOT'].'/Classes/PHPExcel.php';require_once $_SERVER['DOCUMENT_ROOT' ...
- Java基础(1) - 语法 & 概念
Java基础语法 基础 1. Java对大小写敏感 2. Java注释 //单行注释 这是一行注释 /* 这里是多行 注释 */ /** 这里是文档注释 @author 0o晓月メ */ 3. 访问修 ...
- Mac之OS系统下搭建JavaEE环境 <二> 之Tomcat 的安装配置
二.Tomcat的安装与配置 1.下载Tomcat 找到Tomcat的官网 百度搜索Tomcat 点击下载即可 下载网址:http://tomcat.apache.org/download-80.cg ...
- Django学习(一)---基本配置及创建项目、应用
安装:在Django官网下载最新版Django然后通过pip安装即可 一.创建项目 进入文件夹,打开cmd窗口,输入django-admin startproject myblog(项目名) 二.创建 ...
- 在Windows上安装Elasticsearch v5.4.2
前言 最近项目里为了加快后台系统的搜索速度,决定接入开源的搜索引擎,于是大家都在对比较常用的几个开源做技术调研,比如Lucene+盘龙分词,Solr,还有本篇要介绍的Elasticsearch.话不多 ...