js验证身份证号码中带有X的
JS正则表达式验证身份证号码
JS正则表达式验证⾝份证号码1. function isCardNo(card)2. {3. // ⾝份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后⼀位是校验位,可能为数字或字符X4. var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;5. if(reg.test(card) === false)6. {7. alert("⾝份证输⼊不合法");8. return false;9. }10. } 最近的项⽬中⽤的需要调⽤实名认证的接⼝,实名认证接⼝价格相⽐短信⽽⾔⾼了不是⼏分钱,所以说调⽤实名认证的条件就要严格把关,因此⽤到js验证真实姓名与js验证⾝份证号。
进⼊正题 js验证真实姓名,是⽤的unicode字符的来进⾏匹配,⽽中国⼈的姓名长度⼀般都是2-4,所以重复匹配{2,4}次1.js验证真实姓名1. var regName =/^[\u4e00-\u9fa5]{2,4}$/;2. if(!regName.test(name)){3. alert('真实姓名填写有误');4. return false;5. }js验证⾝份证号,中国的⾝份证号,⼀代⾝份证号是15位的数字,⼆代⾝份证都是18位的,最后⼀位校验位除了可能是数字还可能是'X'或'x',所以有四种可能性:a.15位数字 b.18位数字 c.17位数字,第⼗⼋位是'X' d.17位数字,第⼗⼋位是'x'2.js验证⾝份证号1. var regIdNo = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;2. if(!regIdNo.test(idNo)){3. alert('⾝份证号填写有误');4. return false;5. }。
前端正则校验规则
前端正则校验规则
前端正则表达式校验规则如下:
1. 手机号格式验证: /^1[3-9]\d{9}$/;
2. 邮箱格式验证: /^[a-zA-Z0-9_-]+[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-
]+)+$/;
3. 密码强度验证:密码长度需在6-16位之间,且至少包含一位数字、一位大写字母和一位小写字母。
4. 身份证格式验证:中国身份证号码由15位或18位数字和大写英文字母
组成,其中18位身份证号码中的最后一位可以是数字或X。
5. 邮箱地址验证:邮箱地址应包含“”符号,且“”符号前后不能有空格或其他字符。
6. 数字验证:用于验证输入的内容是否为数字,可以指定一个范围,例如
0-999。
7. 英文大小写字母验证:用于验证输入的内容是否为英文大小写字母,可以指定一个范围,例如a-z或A-Z。
8. 中文字符验证:用于验证输入的内容是否为中文字符,可以指定一个范围,例如汉字。
9. 特殊字符验证:用于验证输入的内容是否包含特殊字符,例如!$%^&()等。
10. 日期格式验证:用于验证输入的日期格式是否正确,可以指定日期的格式,例如YYYY-MM-DD。
以上是一些常见的正则表达式校验规则,具体使用时需要根据实际需求进行调整和修改。
JavaScript正则表达式验证身份证号码是否合法(两种方法)讲解
JavaScript正则表达式验证身份证号码是否合法(两种方法)正则表达式(regular expression)是一个描述字符模式的对象。
下面通过本篇文章给大家介绍js正则表达式验证身份证号码是否合法,需要的朋友可以参考下本篇文章第一种方法:在用户注册页面有些需求要求的比较严格,需要对身份证js验证是否合法,通过此功能严格此系统软件,从而过滤到很多水客。
下面就此实现方法给大家讲解下。
很多时候我们都是通过一组正则表达式来判断用户输入的身份证是否合法,那在用正则表达式判断之前,你对身份证号的组成有多少了解呢?下面来说说一个身份证号里面包含了多少的信息:1、号码的结构公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。
排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。
2、地址码(前六位数)表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按gb/T2260的规定执行。
3、出生日期码(第七位至十四位)表示编码对象出生的年、月、日,按gb/T7408的规定执行,年、月、日代码之间不用分隔符。
4、顺序码(第十五位至十七位)表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。
5、校验码(第十八位数)作为尾号的校验码,是由号码编制单位按统一的公式计算出来的,如果某人的尾号是0-9,都不会出现X,但如果尾号是10,那么就得用X来代替,因为如果用10做尾号,那么此人的身份证就变成了19位。
X是罗马数字的10,用X来代替10,可以保证公民的身份证符合国家标准。
在知道身份证号结构组成各部分的意思后,我们开始进入主题:1、定义一个全国地区的对象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:"国外"}2、正则表达式判断第二种方法:6768697071727374757677787980818283848586位),皆为数字if(len == '15'){var re_fifteen = /^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/;var arr_data = obj.match(re_fifteen);var year = arr_data[2];var month = arr_data[3];var day = arr_data[4];var birthday = new Date('19'+year+'/'+month+'/'+day);return verifyBirthday('19'+year,month,day,birthday);}//身份证18位时,次序为省(3位)市(3位)年(4位)月(2位)日(2位)校验位(4位),校验位末尾可能为Xif(len == '18'){var re_eighteen = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/;var arr_data = obj.match(re_eighteen);var year = arr_data[2];var month = arr_data[3];var day = arr_data[4];var birthday = new Date(year+'/'+month+'/'+day);return verifyBirthday(year,month,day,birthday);}return false;。
js身份证验证算法
js⾝份证验证算法var validateIdCard=function (id, backInfo) {var info={y: "1900",m: "01",d: "01",sex: "male",valid: false,length: 0},initDate=function (length) {info.length=length;var a=length===15?0:2, // 15:18temp;info.y=(a?"":"19")+id.substring(6,8+a);info.m=id.substring(8+a,10+a);info.d=id.substring(10+a,12+a);info.sex=id.substring(14, 15+a)%2===0?"female":"male";temp=new Date(info.y, info.m-1, info.d);return (temp.getFullYear()==info.y*1)&& (temp.getMonth()+1==info.m*1)&& (temp.getDate()==info.d*1);},back=function () {return backInfo?info:info.valid;};if(typeof id !== "string") return back();// 18if(/^\d{17}[0-9x]$/i.test(id)){if(!initDate(18)) return back();id=id.toLowerCase().split("");var wi=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2],y="10x98765432".split(""),sum=0;for (var i = 0; i<17; i++) sum+=wi[i]*id[i];if(y[sum%11]===id.pop().toLowerCase()) info.valid=true;return back();}// 15else if(/^\d{15}$/.test(id)){if(initDate(15)) info.valid=true;return back();}else{return back();}};validateIdCard(id, detail);string id: ⾝份证号码boolean detail: true-返回详细的计算结果,包括⽣⽇和性别等等 false-默认,返回验证结果example:⾝份证验证⾝份证号分为两种,旧的为15位,新的为18位。
JS-计算身份证校验码(最后一位)
JS-计算⾝份证校验码(最后⼀位)<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Document</title><style>#msg{color: red;}</style></head><body>⾝份证号:<input id="id-card" type="text">(前17位)<br>(校验位)最后⼀位为:<span id="msg"></span><span id="check-digit"></span><br><button onclick="calculate()">计算</button><br><script>"use strict";// 前17位每项的系数let coefficient = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];// 除11取余的结果对应的校验位(最后⼀位)的值let checkDigitMap = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];function calculate(){var idCard = document.querySelector("#id-card");var checkDigit = document.querySelector("#check-digit");var msg = document.querySelector("#msg");var sum = 0;checkDigit.innerHTML = msg.innerHTML = "";if(idCard.value.length < 17){msg.innerHTML = "⾄少输⼊⾝份证前17位";return}for (var i = 0; i < 17; i++) {sum += idCard.value[i] * coefficient[i];}checkDigit.innerHTML = checkDigitMap[sum % 11];}</script></body></html>。
身份证号正则校验(js校验+JAVA校验)
⾝份证号正则校验(js校验+JAVA校验)js校验⾝份证号【15位和18位】[javascript] view plaincopyprint?function scCard(){var scType=document.getElementById("sc_card_type").value;if(scType=="1"){var scCard=document.getElementById("sc_card_num").value;if(scCard.length!=0){if(!checkCard(scCard)){$("#errorTips").html("⾝份证号码格式错误");}else{$("#errorTips").html("");}}}return false;}//function checkidno(obj) {var vcity={ 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:"国外"};checkCard = function(obj){//var card = document.getElementById('card_no').value;//是否为空// if(card === '')// {// return false;//}//校验长度,类型if(isCardNo(obj) === false){return false;}//检查省份if(checkProvince(obj) === false){return false;}//校验⽣⽇if(checkBirthday(obj) === false){return false;}//检验位的检测if(checkParity(obj) === false){return false;}return true;};//检查号码是否符合规范,包括长度,类型isCardNo = function(obj){//⾝份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后⼀位是校验位,可能为数字或字符Xvar reg = /(^\d{15}$)|(^\d{17}(\d|X)$)/;if(reg.test(obj) === false){return false;}return true;};//取⾝份证前两位,校验省份checkProvince = function(obj)var province = obj.substr(0,2);if(vcity[province] == undefined){return false;}return true;};//检查⽣⽇是否正确checkBirthday = function(obj){var len = obj.length;//⾝份证15位时,次序为省(3位)市(3位)年(2位)⽉(2位)⽇(2位)校验位(3位),皆为数字if(len == '15'){var re_fifteen = /^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/;var arr_data = obj.match(re_fifteen);var year = arr_data[2];var month = arr_data[3];var day = arr_data[4];var birthday = new Date('19'+year+'/'+month+'/'+day);return verifyBirthday('19'+year,month,day,birthday);}//⾝份证18位时,次序为省(3位)市(3位)年(4位)⽉(2位)⽇(2位)校验位(4位),校验位末尾可能为X if(len == '18'){var re_eighteen = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/;var arr_data = obj.match(re_eighteen);var year = arr_data[2];var month = arr_data[3];var day = arr_data[4];var birthday = new Date(year+'/'+month+'/'+day);return verifyBirthday(year,month,day,birthday);}return false;};//校验⽇期verifyBirthday = function(year,month,day,birthday){var now = new Date();var now_year = now.getFullYear();//年⽉⽇是否合理if(birthday.getFullYear() == year && (birthday.getMonth() + 1) == month && birthday.getDate() == day){//判断年份的范围(3岁到100岁之间)var time = now_year - year;if(time >= 0 && time <= 130){return true;}return false;}return false;};//校验位的检测checkParity = function(obj){//15位转18位obj = changeFivteenToEighteen(obj);var len = obj.length;if(len == '18'){var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');var cardTemp = 0, i, valnum;for(i = 0; i < 17; i ++){cardTemp += obj.substr(i, 1) * arrInt[i];}valnum = arrCh[cardTemp % 11];if (valnum == obj.substr(17, 1)){return true;}return false;}return false;};//15位转18位⾝份证号changeFivteenToEighteen = function(obj)if(obj.length == '15'){var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');var cardTemp = 0, i;obj = obj.substr(0, 6) + '19' + obj.substr(6, obj.length - 6);for(i = 0; i < 17; i ++){cardTemp += obj.substr(i, 1) * arrInt[i];}obj += arrCh[cardTemp % 11];return obj;}return obj;};JAVA校验package com.ebiz.base.utils;import java.text.SimpleDateFormat;import java.util.Date;import java.util.GregorianCalendar;import java.util.List;import java.util.regex.Matcher;import java.util.regex.Pattern;import com.ebiz.base.consts.BaseConst;import com.ebiz.base.consts.ConfigConst;import com.ebiz.base.consts.ExceptionConst;import com.ebiz.framework.util.date.DateUtil;import com.ebiz.framework.util.date.DateValidate;import com.ebiz.framework.util.validate.ValidateUtil;import puta.FndPageRule;import com.hp.hpl.sparta.ParseException;public class CheckIdentificationUtil {public static void main(String[] args) {System.out.println(idCardValidate("370802*********"));}/**功能 18位⾝份证的校验* @param idStr* @return ParseException 1001* @throws Exception* @throws ParseException* @throws NumberFormatException* @throws java.text.ParseException* @author wangming*/public static String idCardValidate(String idStr) {if (idStr == null || ( idStr.length() != 15 && idStr.length() != 18 )) {return BaseConst.PUBLIC_RESPONSE_FAIL;}if( idStr.length() == 15 ){StringBuilder sb = new StringBuilder();sb.append(idStr.substring(0, 6)).append("19").append(idStr.substring(6));try {sb.append(getVerifyCode(sb.toString()));idStr = sb.toString();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println(sb);}String errorInfo = "";// 记录错误信息//取模映射String[] valCodeArr = { "1", "0", "X", "9", "8", "7", "6", "5", "4","3", "2" };//加权String[] wi = { "7", "9", "10", "5", "8", "4", "2", "1", "6", "3", "7","9", "10", "5", "8", "4", "2" }; String ai =idStr.substring(0, 17);if (ValidateUtil.isDigit(ai) == false) {errorInfo = ExceptionConst.PAXINFO_CARD_ISNOTNUM;return errorInfo;}// ================ 出⽣年⽉是否有效 ================String strYear = ai.substring(6, 10);// 年份String strMonth = ai.substring(10, 12);// ⽉份String strDay = ai.substring(12, 14);// ⽉份if (DateValidate.isStrDate(ai.substring(6,14))== false) {errorInfo = ExceptionConst.PAXINFO_CARD_BIRTHDAY_OVER;//"⾝份证⽣⽇⽆效。
js validate常用验证方法
在JavaScript中,有几种常见的验证方法,包括:
1. 空值验证:使用`== null`或`=== null`来检查变量是否为空。
2. 邮箱格式验证:使用正则表达式进行匹配,如`/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/`。
3. 密码验证:检查密码是否包含至少一个大写字母、一个小写字母和一个数字,以及是否达到一定的长度。
4. 身份证号码验证:使用正则表达式进行匹配,如`/^\d{15}$|^\d{18}$|^\d{17}(\d|X|x)$/`。
5. 手机号验证:使用正则表达式进行匹配,如`/^1[3-9]\d{9}$/`。
6. 唯一性验证:检查一个值是否已经存在于数据库或其他数据源中。
7. 数据类型验证:使用`typeof`运算符来检查变量的类型。
8. 正则表达式验证:使用正则表达式进行匹配,适用于各种验证场景。
9. 自定义验证:根据具体需求编写自定义验证函数。
这些方法可以单独或组合使用,以实现更复杂的验证需求。
js身份证校验正则
js身份证校验正则JavaScript身份证校验正则:1、基本概念:身份证校验正则是指在使用JavaScript语言中,通过构建正则表达式的匹配规则来校验身份证号的合法性。
通过构建出正则表达式,可以对填写的 long string 或者number 有效地、高效地进行校验。
2、基本校验步骤:(1)长度验证:身份证号长度为15/18位;(2)检查省份格式:身份证号必须符合当前有效的省市编码表;(3)校验校检码:18位的身份证号码末位的校检码为安全码,校检位的计算方法是基于号码前17位的号码加权求和,然后进行11对应的校检码计算,最后与身份证的末尾一位相互照应,以及检验输入号码的真实性。
3、具体正则表达式:(1)身份证15位:^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$(2)身份证18位:^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$4、校验示例:(1)如果载入的是一个字符串:if (str.match(/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/))//string is a valid IDelse//string is a invalid ID5、总结:JavaScript 身份证校验正则是网络开发中常用的一种解决方案,通过构建出正则表达式以及校检码的计算,可以对提交的身份证号码进行长度和省份格式的校验,以及基于算法的真实性检测,从而有效地确保身份证号正确性,实现安全管理及减少冗余数据的负担。
JS正则表达式完美实现身份证校验功能
JS正则表达式完美实现⾝份证校验功能注意:1、只针对18为⾝份证号码进⾏校验,现在15位的应该很少了,2、不区分xX⼤⼩写,3、出⽣年份1900-2099,每⽉的天数也进⾏相关验证(考虑的闰⽉的情况),4、校验规则详见,这个写的⽐较详细和清楚,相信看过后都可以⾃⼰写⼀个,5、⽬前还⽆法对区位码就进⾏精确校验,本⼈搜集整理了区位码,提供了⼀个查询api,仅攻参考。
有不精确的地⽅可以留⾔指出6、这个验证函数⽬前在项⽬中实际运⾏,暂未发现问题,有问题会进⾏更新。
以上直接上代码:function testid(id) {// 1 "验证通过!", 0 //校验不通过 // id为⾝份证号码var format = /^(([1][1-5])|([2][1-3])|([3][1-7])|([4][1-6])|([5][0-4])|([6][1-5])|([7][1])|([8][1-2]))\d{4}(([1][9]\d{2})|([2]\d{3}))(([0][1-9])|([1][0-2]))(([0][1-9])|([1-2][0-9])|([3][0-1]))\d{3}[0-9xX]$/; //号码规则校验if(!format.test(id)){return {'status':0,'msg':'⾝份证号码不合规'};}//区位码校验//出⽣年⽉⽇校验前正则限制起始年份为1900;var year = id.substr(6,4),//⾝份证年month = id.substr(10,2),//⾝份证⽉date = id.substr(12,2),//⾝份证⽇time = Date.parse(month+'-'+date+'-'+year),//⾝份证⽇期时间戳datenow_time = Date.parse(new Date()),//当前时间戳dates = (new Date(year,month,0)).getDate();//⾝份证当⽉天数if(time>now_time||date>dates){return {'status':0,'msg':'出⽣⽇期不合规'}}//校验码判断var c = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2); //系数var b = new Array('1','0','X','9','8','7','6','5','4','3','2'); //校验码对照表var id_array = id.split("");var sum = 0;for(var k=0;k<17;k++){sum+=parseInt(id_array[k])*parseInt(c[k]);}if(id_array[17].toUpperCase() != b[sum%11].toUpperCase()){return {'status':0,'msg':'⾝份证校验码不合规'}}return {'status':1,'msg':'校验通过'}}。
JavaScript常用表单验证正则表达式(身份证、电话号码、邮编、日期、IP等)
JavaScript常⽤表单验证正则表达式(⾝份证、电话号码、邮编、⽇期、IP等)⾝份证正则表达式//⾝份证正则表达式(15位)isIDCard1=/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;//⾝份证正则表达式(18位)isIDCard2=/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/;地区、性别和⾝份证进⾏判断的正则表达式:<script>varaCity={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:”国外”}function cidInfo(sId){var iSum=0var info=”"if(!/^\d{17}(\d|x)$/i.test(sId))return false;sId=sId.replace(/x$/i,”a”);if(aCity[parseInt(sId.substr(0,2))]==null)return “Error:⾮法地区”;sBirthday=sId.substr(6,4)+”-”+Number(sId.substr(10,2))+”-”+Number(sId.substr(12,2));var d=new Date(sBirthday.replace(/-/g,”/”))if(sBirthday!=(d.getFullYear()+”-”+ (d.getMonth()+1) + “-” + d.getDate()))return “Error:⾮法⽣⽇”;for(var i = 17;i>=0;i –) iSum += (Math.pow(2,i) % 11) * parseInt(sId.charAt(17 – i),11)if(iSum%11!=1)return “Error:⾮法证号”;return aCity[parseInt(sId.substr(0,2))]+”,”+sBirthday+”,”+(sId.substr(16,1)%2?”男”:”⼥”)}</script>————-正则表达式全集中国电话号码验证匹配形式如:0511-******* 或者021-******** 或者 021-********-555 或者 (0511)4405222正则表达式 “((d{3,4})|d{3,4}-)?d{7,8}(-d{3})*”中国邮政编码验证匹配形式如:215421正则表达式 “d{6}”电⼦邮件验证匹配形式如:justali@正则表达式 “w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*”⾝份证验证匹配形式如:15位或者18位⾝份证正则表达式 “d{18}|d{15}”常⽤数字验证正则表达式“d{n}” n为规定长度“d{n,m}” n到m的长度范围⾮法字符验证匹配⾮法字符如:< > & / ‘ |正则表达式 [^<>&/|'\]+⽇期验证匹配形式如:20030718,030718范围:1900–2099正则表达式((((19){1}|(20){1})d{2})|d{2})[01]{1}d{1}[0-3]{1}d{1}正则表达式是⼀个好东西,但是⼀般情况下,我们需要验证的内容少之⼜少。
使用javascript实现身份证校验与信息提取
使⽤javascript实现⾝份证校验与信息提取我们先了解⼀下⾝份证是怎么校验的:将前⾯的⾝份证号码17位数分别乘以不同的系数,将这17位数字和系数相乘的结果相加,然后除以11求余,根据最后的余数对应校验码,判断⾝份证是否符合要求。
现在我们开始写代码<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title></head><body><p>⾝份证号:<input type='text' id='idCard'/></p><P>出⽣⽇期:<input type='text' readonly id='age'/></P><P>性 别:<input type='radio' disabled name='sex' id='man'>男<input type='radio' name='sex' disabled id='woman'>⼥</P><P>籍 贯:<input type='text' readonly id='dess'></P><button type='button' id='btnSub'>确定</button><script src='js/jquery-1.11.3.min.js'></script><script>$("#btnSub").click(function(){var idCard = $("#idCard").val();//根据⾝份证不同的位置,截取相对应的数据var sex = idCard.substring(16,17);var num = idCard.substring(17,18);var year = idCard.substring(6,10);var month = idCard.substring(10,12);var day = idCard.substring(12,14);var age = year+"-"+month+"-"+day;var date = new Date(age);var sum = 0;var arr = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,0];var arr2 = [1,0,'X',9,8,7,6,5,4,3,2];//判断⾝份证是否为空,或者长度有没有达到要求(这⾥规定⾝份证18位)if(!(idCard && /^[\d]{18}$/.test(idCard))){alert("⾝份证输⼊格式不对!")return false;}else{//计算第18位数是否符合要求for(var i=0;i<18;i++){sum += idCard.substring(i,i+1)*arr[i]}if(num== arr2[sum%11] || num===arr2[sum%11]){ $("#age").val(age)if(sex%2 == 1){$("#man").prop("checked","true")}else{$("#woman").prop("checked","true")}$.ajax({url:"IdCardServlet",type:"get",data:{idCard:idCard},success:function(data){$.each(data,function(index,obj){$("#dess").val(obj.detail);})}})}else{alert("⾝份证输⼊格式不对!")$("#man").removeAttr("checked")$("#woman").removeAttr("checked")$("#dess").val("");$("#age").val("");return false;}}})</script></body></html>效果图:如果需要显⽰籍贯的话,需要那对应的数字去数据库中查找显⽰。
JS严格校验身份证号-(严格校验每一位身份号码)
JS严格校验⾝份证号-(严格校验每⼀位⾝份号码)html校验⽰例<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>JS严格校验⾝份证号</title></head><body><div align="center"></br></br></br></br></br></br></br></br><div class="form-inline"><input type="text"class="form-control" style="width: 200px;" id="idCard" placeholder="输⼊⾝份证号"><button class="btn btn-default" onclick="check();">校验</button></div></div><footer class="footer"><div class="container"><p class="text-muted" align="center">Author:<a href="" target="_blank">麦⽥技术博客</a></p></div></footer></body><script type="text/javascript">function check(){var idCard = document.getElementById("idCard").value;var flag =IdCardValidate(idCard);if(flag){alert("正确!");}else{alert("您输⼊的⾝份证号格式不正确 ");}}var Wi =[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1];// 加权因⼦var ValideCode =[1,0,10,9,8,7,6,5,4,3,2];// ⾝份证验证位值.10代表Xfunction IdCardValidate(idCard){idCard =trim(idCard.replace(/ /g,""));//去掉字符串头尾空格if(idCard.length ==15){return isValidityBrithBy15IdCard(idCard);//进⾏15位⾝份证的验证}else if(idCard.length ==18){var a_idCard = idCard.split("");// 得到⾝份证数组if(isValidityBrithBy18IdCard(idCard)&&isTrueValidateCodeBy18IdCard(a_idCard)){//进⾏18位⾝份证的基本验证和第18位的验证return true;}else{return false;}}else{return false;}}/*** 判断⾝份证号码为18位时最后的验证位是否正确* @param a_idCard ⾝份证号码数组* @return*/function isTrueValidateCodeBy18IdCard(a_idCard){function isTrueValidateCodeBy18IdCard(a_idCard){var sum =0;// 声明加权求和变量if(a_idCard[17].toLowerCase()=='x'){a_idCard[17]=10;// 将最后位为x的验证码替换为10⽅便后续操作}for(var i =0; i <17; i++){sum += Wi[i]* a_idCard[i];// 加权求和}valCodePosition = sum %11;// 得到验证码所位置if(a_idCard[17]== ValideCode[valCodePosition]){return true;}else{return false;}}/*** 验证18位数⾝份证号码中的⽣⽇是否是有效⽣⽇* @param idCard 18位书⾝份证字符串* @return*/function isValidityBrithBy18IdCard(idCard18){var year = idCard18.substring(6,10);var month = idCard18.substring(10,12);var day = idCard18.substring(12,14);var temp_date =new Date(year,parseFloat(month)-1,parseFloat(day)); // 这⾥⽤getFullYear()获取年份,避免千年⾍问题if(temp_date.getFullYear()!=parseFloat(year)||temp_date.getMonth()!=parseFloat(month)-1||temp_date.getDate()!=parseFloat(day)){return false;}else{return true;}}/*** 验证15位数⾝份证号码中的⽣⽇是否是有效⽣⽇* @param idCard15 15位书⾝份证字符串* @return*/function isValidityBrithBy15IdCard(idCard15){var year = idCard15.substring(6,8);var month = idCard15.substring(8,10);var day = idCard15.substring(10,12);var temp_date =new Date(year,parseFloat(month)-1,parseFloat(day)); // 对于⽼⾝份证中的你年龄则不需考虑千年⾍问题⽽使⽤getYear()⽅法if(temp_date.getYear()!=parseFloat(year)||temp_date.getMonth()!=parseFloat(month)-1||temp_date.getDate()!=parseFloat(day)){return false;}else{return true;}}//去掉字符串头尾空格function trim(str){return str.replace(/(^\s*)|(\s*$)/g,"");}</script></html>js校验核⼼代码引⼊只需要调⽤这个⽅法即可IdCardValidate(“你要验证的⾝份证”); function check(){var idCard = document.getElementById("idCard").value;var flag =IdCardValidate(idCard);var flag =IdCardValidate(idCard);if(flag){alert("正确!");}else{alert("您输⼊的⾝份证号格式不正确 ");}}var Wi =[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1];// 加权因⼦var ValideCode =[1,0,10,9,8,7,6,5,4,3,2];// ⾝份证验证位值.10代表Xfunction IdCardValidate(idCard){idCard =trim(idCard.replace(/ /g,""));//去掉字符串头尾空格if(idCard.length ==15){return isValidityBrithBy15IdCard(idCard);//进⾏15位⾝份证的验证}else if(idCard.length ==18){var a_idCard = idCard.split("");// 得到⾝份证数组if(isValidityBrithBy18IdCard(idCard)&&isTrueValidateCodeBy18IdCard(a_idCard)){//进⾏18位⾝份证的基本验证和第18位的验证return true;}else{return false;}}else{return false;}}/*** 判断⾝份证号码为18位时最后的验证位是否正确* @param a_idCard ⾝份证号码数组* @return*/function isTrueValidateCodeBy18IdCard(a_idCard){var sum =0;// 声明加权求和变量if(a_idCard[17].toLowerCase()=='x'){a_idCard[17]=10;// 将最后位为x的验证码替换为10⽅便后续操作}for(var i =0; i <17; i++){sum += Wi[i]* a_idCard[i];// 加权求和}valCodePosition = sum %11;// 得到验证码所位置if(a_idCard[17]== ValideCode[valCodePosition]){return true;}else{return false;}}/*** 验证18位数⾝份证号码中的⽣⽇是否是有效⽣⽇* @param idCard 18位书⾝份证字符串* @return*/function isValidityBrithBy18IdCard(idCard18){var year = idCard18.substring(6,10);var month = idCard18.substring(10,12);var day = idCard18.substring(12,14);var temp_date =new Date(year,parseFloat(month)-1,parseFloat(day));// 这⾥⽤getFullYear()获取年份,避免千年⾍问题if(temp_date.getFullYear()!=parseFloat(year)||temp_date.getMonth()!=parseFloat(month)-1||temp_date.getDate()!=parseFloat(day)){return false;}else{return true;}}/*** 验证15位数⾝份证号码中的⽣⽇是否是有效⽣⽇* @param idCard15 15位书⾝份证字符串* @return* @return*/function isValidityBrithBy15IdCard(idCard15){var year = idCard15.substring(6,8);var month = idCard15.substring(8,10);var day = idCard15.substring(10,12);var temp_date =new Date(year,parseFloat(month)-1,parseFloat(day));// 对于⽼⾝份证中的你年龄则不需考虑千年⾍问题⽽使⽤getYear()⽅法if(temp_date.getYear()!=parseFloat(year)||temp_date.getMonth()!=parseFloat(month)-1||temp_date.getDate()!=parseFloat(day)){return false;}else{return true;}}//去掉字符串头尾空格function trim(str){return str.replace(/(^\s*)|(\s*$)/g,"");}。
JS编写函数实现对身份证号码最后一位的验证功能
JS编写函数实现对⾝份证号码最后⼀位的验证功能⼆代⾝份证号码为18位,其最后⼀位(第18位)的计算⽅法为:1、将前⾯的⾝份证号码17位数分别乘以不同的系数。
从第⼀位到第⼗七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-22、将这17位数字和系数相乘的结果相加3、⽤加出来和除以11,看余数是多少?4、余数只可能有0-1-2-3-4-5-6-7-8-9-10这11个数字。
每个数字所对应的最后⼀位⾝份证的号码为:1-0-X -9-8-7-6-5-4-3-2。
即,如果余数是2,就会在⾝份证的第18位数字上出现罗马数字的Ⅹ。
如果余数是10,⾝份证的最后⼀位号码就是2。
例如:某男性的⾝份证号码是340524************。
验证其最后⼀位是否正确时,⾸先需要得出前17位的乘积和是189,然后⽤189除以11得出的结果是17+2/11,也就是说其余数是2。
最后通过对应规则就可以知道余数2对应的数字是x。
所以,可以判定此⾝份证号码的最后⼀位是合格的。
编写验证⽅法如下://验证⽅法function verifyCode(id){if(id.length !=18 )return false;/*1、从第⼀位到第⼗七位的系数分别为:7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2将这17位数字和系数相乘的结果相加。
*/var arr = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];var sum = 0;for(var i=0; i<arr.length; i++){sum += parseInt(id.charAt(i)) * arr[i];}//2、⽤加出来和除以11,看余数,var c = sum%11;//3、分别对应的最后⼀位⾝份证的号码为:1-0-X-9-8-7-6-5-4-3-2var ch = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];var code = ch[c];var last = id.charAt(17);last = last=='x' ? 'X': last;return last == code;}测试该⽅法:var id = "340524************";console.log(verifyCode(id));以上所述是⼩编给⼤家介绍的JS编写函数实现对⾝份证号码最后⼀位的验证功能,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。
如何利用JS通过身份证号获取当事人的生日、年龄、性别
如何利⽤JS通过⾝份证号获取当事⼈的⽣⽇、年龄、性别⾝份证可以识别⼀个⼈的信息,下⾯就介绍⼀下如何利⽤js通过⾝份证号码获取当事⼈的年龄和性别。
<script>function IdCard(UUserCard,num){if(num==1){//获取出⽣⽇期birth=UUserCard.substring(6, 10) + "-" + UUserCard.substring(10, 12) + "-" + UUserCard.substring(12, 14);return birth;}if(num==2){//获取性别if (parseInt(UUserCard.substr(16, 1)) % 2 == 1) {//男return "男";} else {//⼥return "⼥";}}if(num==3){//获取年龄var myDate = new Date();var month = myDate.getMonth() + 1;var day = myDate.getDate();var age = myDate.getFullYear() - UUserCard.substring(6, 10) - 1;if (UUserCard.substring(10, 12) < month || UUserCard.substring(10, 12) == month && UUserCard.substring(12, 14) <= day) {age++;}return age;}}alert (IdCard('142223************',3));</script>下⾯给⼤家分享⼀段代码关于通过⾝份证号获取⼈的年龄和性别代码实例如下:<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="author" content="https:///" /><title></title><script type="text/javascript">function discriCard(UUserCard){UUserCard.substring(6,10)+"-"+UUserCard.substring(10,12)+"-"+UUserCard.substring(12,14);//获取性别if(parseInt(UUserCard.substr(16,1))%2==1){alert("男");//是男则执⾏代码 ...}else{alert("⼥");//是⼥则执⾏代码 ...}//获取年龄var myDate = new Date();var month = myDate.getMonth() + 1;var day = myDate.getDate();var age = myDate.getFullYear()-UUserCard.substring(6, 10) - 1;if (UUserCard.substring(10,12)<month||UUserCard.substring(10,12)==month&&UUserCard.substring(12,14)<=day){age++;}alert(age);//年龄 age}window.onload=function(){var txt=document.getElementById("txt");var bt=document.getElementById("bt");bt.onclick=function(){discriCard(txt.value);}}</script></head><body><input type="text" id="txt" /><input type="button" value="点击获取信息" id="bt" /></body></html>以上代码实现了我们的要求,在⽂本框内输⼊⾝份证号码,然后点击按钮就会弹出年龄和性别。
身份证后面有个X是什么意思
身份证后面有个X是什么意思身份证号最后一位是该身份证的校验码,如果出现x,该x并不是英文字母x,而是罗马字母x,代表数字10。
在我们目前使用的18位身份证号码中,第1~6位为地址码,第7~14位为出生日期码,第15~17位为顺序码,第18位为校验码。
具体来说,最后一位校验码通常是由前面的数字通过某种运算得出,用以检验该组数字的正确性。
而这个计算的结果可能为“10”,但如果用“10”做尾号,那么身份证号就变成19位了,违反了国家标准。
所以用罗马数字中的“10”——“ⅹ”来代替“10”作为最后一位校验码。
地址码(身份证前六位)则表示编码对象居住地户口所在县(市、旗、区)的行政区划代码。
生日码(身份证第七至第十四位)表示编码对象出生的年、月、日。
顺序码(身份证十五至十七位)为同一地址码所标识的区域范围内,对同年、月、日长大的人员编撰的顺序号。
其中第十七位奇数让给男性,偶数让给女性。
校验码(身份证最后一位)根据前面十七位数字码,按照iso:.mod11-2计算出来的校验码。
作为尾号的校验码,是由号码编制单位按统一的公式计算出来的,如果某人的尾号是0-9,都不会出现x,但如果尾号是10,那就用x替代,因为如果用10作尾号,此人的身份证号码就变成了19位,为了身份证号码数位的一致性,用罗马字母x替代101、将前面的身份证号码17位数分别除以相同的系数。
第i十一位对应的数为[2^(18-i)]mod11。
从第一位至第十七位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 ;2、将这17位数字和系数相乘的结果相加;3、用加出的和除以11,看看余数就是多少;4、余数只可能有0 1 2 3 4 5 6 7 8 9 10这11个数字。
其分别对应的最后一位身份证的号码为1 0 x 9 8 7 6 5 4 3 2;5、通过上面获知如果余数就是2,就可以在身份证的第18十一位数字上发生罗马数字的ⅹ。
js脱敏规则
js脱敏规则
在处理敏感数据时,脱敏规则是必不可少的一环。
脱敏规则指的是将敏感数据中的敏感信息去掉或替换为其他不敏感的信息,以保护数据的隐私和安全。
在JavaScript中,我们可以通过一些规则来实现数据的脱敏。
首先,我们需要明确哪些数据是需要进行脱敏的。
一般来说,敏感数据包括个人信息、银行卡信息、密码等。
对于这些数据,我们需要将其中的敏感信息替换为其他不敏感的信息,例如将姓名中的姓和名分别替换为“张三”和“李四”,将银行卡号中的后四位数字替换为“****”。
其次,我们需要制定脱敏规则。
对于不同的数据类型,需要使用不同的脱敏规则。
例如,对于身份证号码,我们可以将其中的出生日期和校验码去掉,只保留前8位和最后一位数字;对于手机号码,我们可以将其中的中间四位数字替换为“****”。
最后,我们需要在JavaScript中实现这些脱敏规则。
以下是一个简单的示例代码:
在这个示例代码中,我们定义了一个名为desensitizeData的函数,该函数接受一个数据对象作为参数,并返回脱敏后的数据对象。
在函数中,我们使用了正则表达式来匹配并替换敏感信息。
例如,对于身份证号码,我们使用正则表达式\d{6}(\d{4})\d{2}(\d{2})\d{3}[\dXx]来匹配出生日期和校验码,并将其替换为“****”。
通过这种方式,我们可以方便地在JavaScript中实现数据的脱敏。
当然,具体的脱敏规则需要根据实际情况来制定,并且需要根据数据的类型和敏感程度来进行不同的处理。
js身份证正则表达式
js身份证正则表达式JS身份证正则表达式是程序开发领域中一种非常重要的技术工具,本文讨论的是使用JS正则表达式来验证中国的身份证号码。
身份证号码是一种全球通用的身份认证凭证,它被广泛应用于各种场合,例如用于报名参加考试,办理选民证明,办理社会保险等。
本文主要介绍了JS身份证正则表达式在验证身份证号码时的应用,以及如何根据身份证号码提取性别和出生日期等信息。
什么是JS身份证正则表达式?JS正则表达式是一种特殊的文本模式,可以用来检查字符串中的文本结构,匹配模式可以是单个字符、单词或者句子等。
正则表达式是一种强大的字符串处理工具,在编写程序时可以大大简化字符串处理任务。
可以用来匹配字符串中预定义的模式,也可以用来替换或删除文本中的特定字符。
JS中的正则表达式可以用来验证身份证号码的合法性,但要注意的是当地的身份证号码的格式有可能会有所差别,因此必须根据不同的地区形式来构建正则表达式,以确保正确性。
根据中华人民共和国公民身份号码的构成,全国的有效身份证号码格式为1-2位省或直辖市代码(市/州代码+县/区代码)+ 6位数出生日期+3位顺序码+1位校验码,例如:,其中,440881表示广东省深圳市,19830109表示出生日期,4232表示顺序码,顺序码可以为偶数或奇数,最后一位是校验码,根据公式校验码可以计算出。
下面的正则表达式可用于验证中国的身份证号码:`^[1-9]d{7}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3}$|^[1-9]d{ 5}[1-9]d{3}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3}([0-9]|X)$`上述正则表达式可以用来验证15位和18位身份证号码的合法性。
此正则表达式可以使用JS的match方法来验证输入的身份证号码是否符合指定格式,如果是,则返回true,否则返回false:if(id.match(/^[1-9]d{7}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3} $|^[1-9]d{5}[1-9]d{3}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3} ([0-9]|X)$/))另外,还可以使用正则表达式来从身份证号码中提取出性别和出生日期信息。
js 正则校验格式
在JavaScript中,正则表达式是一种用于验证字符串格式的强大工具。
您可以使用正则表达式来检查字符串是否符合指定的格式,例如电子邮件地址、电话号码、日期等。
以下是一些常见的正则表达式示例:
1. 电子邮件地址:
```
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
```
2. 电话号码(中国):
```
^1[3-9]\d{9}$
```
3. 日期(YYYY-MM-DD格式):
```
^[0-9]{4}-[0-9]{2}-[0-9]{2}$
```
4. 身份证号码(18位):
```
^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[01])(0[1-9]|[12]\d|3[01])\d{3}[Xx\d]$
```
5. IP地址(IPv4格式):
```
^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
```
这些正则表达式仅适用于特定的格式,您可以根据需要进行修改。
如果您需要更加复杂的校验规则,请参考相关文档和示例,并尝试使用组合和嵌套的正则表达式来构建您自己的校验规则。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
var date6 = idNumber.substring(6,12);
if (checkDate(date6) == false) {
//alert("身份证日期信息有误!.");
return false;
}
}
//alert ("Correct.");
// calculate the sum of the products
for(i=0;i<17;i++) {
lngProduct = lngProduct + varArray[i];
}
// calculate the check digit
intCheckDigit = 12 - lngProduct % 11;
var error;
var varArray = new Array();
var intValue;
var lngProduct = 0;
var intCheckDigit;
var intStrLen = num.length;
var idNumber = num;
// initialize
if ((intStrLen != 15) && (intStrLen != 18)) {
//error = "输入身份证号码长度不对!";
//alert(error);
//frmAddUser.txtIDCard.focus();
return false;
}
// check and set value
switch (intCheckDigit) {
case 10:
intCheckDigit = 'X';
break;
case 11:
intCheckDigit = 0;
break;
case 12:
intCheckDigit = 1;
break;
}
// check last digit
<script type="text/javascript">
alert(isIdCardNo("440781197007220512"));
//--身份证号码验证-支持新的带x身份证
function isIdCardNo(num)
{
var factorArr = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);
for(i=0;i<intStrLen;i++) {
varArray[i] = idNumber.charAt(i);
if ((varArray[i] < '0' || varArray[i] > '9') && (i != 17)) {
//error = "错误的身份证号码!.";
return true;
}
function checkDate(date)
{
return true;
}
</script>
详细出处参考:/article/15444.htm
//check date
var date8 = idNumber.substring(6,14); Байду номын сангаас
if (checkDate(date8) == false) {
//error = "身份证中日期信息不正确!.";
//alert(error);
return false;
}
if (varArray[17].toUpperCase() != intCheckDigit) {
//error = "身份证效验位错误!...正确为: " + intCheckDigit + ".";
//alert(error);
return false;
}
}
else{ //length is 15
//alert(error);
//frmAddUser.txtIDCard.focus();
return false;
} else if (i < 17) {
varArray[i] = varArray[i]*factorArr[i];
}
}
if (intStrLen == 18) {