全国身份证及港澳台身份证验证js代码、函数。
js判断输入是否中文,数字,身份证等等js函数
用正则表达式限制只能输入全角字符: onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))"
}else if(c=="-"&&str.length==1){
return false;
}
}else if(c < "0" || c > "9"){
return false;
}
}
return true;
}
/*
英文判断函数,返回true表示是全部英文,返回false表示不全部是英文
return false;
}
}
return true;
}
/*
身份证判断函数,是返回true,不是返回false
15位数字,18位数字或者最后一位为X(大写)
*/
function isSFZ(str){
if(""==str){
return false;
*/
function isXZ(str){
if(""==str){
return false;
}
var reg = /^[1-6](\.5)?$/;
var r = str.match(reg);
全国身份证及港澳台身份证验证js代码、函数。
// 988058查号网,骗子号码查询(http:// )//一下是验证身份证号码的js函数function checkIdcard(idcard){var Errors=new Array("验证通过!","身份证号码位数不对!","身份证号码出生日期超出范围或含有非法字符!","身份证号码校验错误!","身份证地区非法!");var area={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:"国外"}var retflag=false;var idcard,Y,JYM;var S,M;var idcard_array = new Array();idcard_array = idcard.split("");//地区检验if(area[parseInt(idcard.substr(0,2))]==null) return Errors[4];//身份号码位数及格式检验switch(idcard.length){case 15:if ( (parseInt(idcard.substr(6,2))+1900) % 4 == 0 || ((parseInt(idcard.substr(6,2))+1900) %100 == 0 && (parseInt(idcard.substr(6,2))+1900) % 4 == 0 )){ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9] |[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/;//测试出生日期的合法性}else {ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9] |[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/;//测试出生日期的合法性}if(ereg.test(idcard))return Errors[0];else{return Errors[2];}break;case 18://18位身份号码检测//出生日期的合法性检查//闰年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[ 1-2][0-9]))//平年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1 [0-9]|2[0-8]))if ( parseInt(idcard.substr(6,4)) % 4 == 0 || (parseInt(idcard.substr(6,4)) % 100 == 0 && parseInt(idcard.substr(6,4))%4 == 0 )){ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1 -9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/;//闰年出生日期的合法性正则表达式}else{ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1 -9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/;//平年出生日期的合法性正则表达式}if(ereg.test(idcard)){//测试出生日期的合法性//计算校验位S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7+ (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9+ (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10+ (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5+ (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8+ (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4+ (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2+ parseInt(idcard_array[7]) * 1+ parseInt(idcard_array[8]) * 6+ parseInt(idcard_array[9]) * 3 ;Y = S % 11;M = "F";JYM = "10X98765432";M = JYM.substr(Y,1);//判断校验位if(M == idcard_array[17]) return Errors[0]; //检测ID的校验位else return Errors[3];}else return Errors[2];break;default:return Errors[1];break;}}。
JavaScript二代公民身份证号验证
JavaScript⼆代公民⾝份证号验证⾝份证号码中的校验码是⾝份证号码的最后⼀位,是根据〖中华⼈民共和国国家标准GB 11643-1999〗中有关公民⾝份号码的规定,根据精密的计算公式计算出来的,公民⾝份号码是特征组合码,由⼗七位数字本体码和⼀位数字校验码组成。
计算⽅法1、将前⾯的⾝份证号码17位数分别乘以不同的系数。
从第⼀位到第⼗七位的系数分别为: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位数字上出现罗马数字的Ⅹ。
如果余数是10,⾝份证的最后⼀位号码就是2;例如:某男性的⾝份证号码是340524************。
我们要看看这个⾝份证是不是合法的⾝份证。
⾸先:我们计算3*7+4*9+0*10+5*5+...+1*2,前17位的乘积和是189然后:⽤189除以11得出的结果是商17余2最后:通过对应规则就可以知道余数2对应的数字是x。
所以,这是⼀个合格的⾝份证号码。
js代码:1function check_id(){2var idcode= document.getElementById("IDNumber").value3// alert(idcode)4//检测⾝份证号码合法性---全部数字或数字+X/x 18位5// 加权因⼦6var weight_factor = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];7// 校验码8var check_code = ['1', '0', 'X' , '9', '8', '7', '6', '5', '4', '3', '2'];910var code = idcode + "";11var last = idcode[17];//最后⼀位1213var seventeen = code.substring(0,17);1415// ISO 7064:1983.MOD 11-216// 判断最后⼀位校验码是否正确17var arr = seventeen.split("");18var len = arr.length;19var num = 0;20for(var i = 0; i < len; i++){21 num = num + arr[i] * weight_factor[i];22 }2324// 获取余数25var resisue = num%11;26var last_no = check_code[resisue];2728// 格式的正则29// 正则思路30/*31第⼀位不可能是032第⼆位到第六位可以是0-933第七位到第⼗位是年份,所以七⼋位为19或者2034⼗⼀位和⼗⼆位是⽉份,这两位是01-12之间的数值35⼗三位和⼗四位是⽇期,是从01-31之间的数值36⼗五,⼗六,⼗七都是数字0-937⼗⼋位可能是数字0-9,也可能是X38*/39var idcard_patter = /^[1-9][0-9]{5}([1][9][0-9]{2}|[2][0][0|1][0-9])([0][1-9]|[1][0|1|2])([0][1-9]|[1|2][0-9]|[3][0|1])[0-9]{3}([0-9]|[X])$/; 4041// 判断格式是否正确42var format = idcard_patter.test(idcode);43// alert(format)44// 返回验证结果,校验码和格式同时正确才算是合法的⾝份证号码45// return last === last_no && format ? true : false;46if(!(format==true && (last_no===last))){47 alert("⾝份证号码格式输⼊有误!")48 document.getElementById("IDNumber").focus();49 }50 }。
Javascript使用正则验证身份证号(简单)
Javascript使⽤正则验证⾝份证号(简单)
⾝份证为15位或者18位,15位的全为数字,18位的前17位为数字,最后⼀位为数字或者⼤写字母”X“。
与之匹配的正则表达式:
(^\d{15}$)|(^\d{17}([0-9]|X)$)
下⾯以Javascript为例进⾏说明:
functionisIdCardNo(num) { num = num.toUpperCase();
//⾝份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后⼀位是校验位,可能为数字或字符X。
if ( !(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num)) )
{
alert('输⼊的⾝份证号长度不对,或者号码不符合规定!\n15位号码应全为数字,18位号码末位可以为数字或X。
');
returnfalse;
};
}
').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i <= lines; i++) { $numbering.append($('
').text(i)); }; $numbering.fadeIn(1700); }); });
以上所述是⼩编给⼤家介绍的Javascript使⽤正则验证⾝份证号(简单),希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。
在此也⾮常感谢⼤家对⽹站的⽀持!。
JavaScrit工具函数之判断是否为合法身份证号码
JavaScrit工具函数之判断是否为合法身份证号码JavaScript工具函数之判断是否为合法身份证号码在实际开发中,经常会遇到需要验证用户输入的身份证号码是否合法的情况。
本文将介绍如何使用JavaScript编写一个工具函数来实现身份证号码的验证。
身份证号码是中国公民个人身份识别的重要依据,其格式由18位数字(最后一位可能为X)组成。
验证身份证号码的合法性需要根据国家相关标准进行检验,具体步骤如下:步骤一:计算身份证号前17位的加权和身份证号前17位的每一位数字都有一个对应的权重,由2的次方递减,依次为:7、9、10、5、8、4、2、1、6、3、7、9、10、5、8、4、2,将17位数字与对应的权重相乘后,再将相乘结果累加得到加权和。
步骤二:计算加权和除以11的余数将加权和除以11,得到一个余数。
步骤三:将余数与最后一位校验码进行比较校验码是根据前17位数字计算得出的,对应关系为:0、1、2、3、4、5、6、7、8、9、10(对应X),校验码与余数一致即为合法身份证号码。
接下来,我们就开始编写JavaScript工具函数来实现身份证号码的验证:```javascriptfunction isValidIDNumber(idNumber) {// 校验身份证号码的长度if (idNumber.length !== 18) {return false;}// 校验身份证号码的前17位var factor = [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 < 17; i++) {sum += parseInt(idNumber.charAt(i)) * factor[i];}// 校验身份证号码的校验码var checkCodeList = ['1','0','X','9','8','7','6','5','4','3','2'];var checkCode = checkCodeList[sum % 11];if (checkCode !== idNumber.charAt(17)) {return false;}return true;}```上述代码中,我们定义了一个`isValidIDNumber`函数,该函数接受一个参数`idNumber`,用于表示待验证的身份证号码。
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. }。
js身份证号码验证(小程序版)
js⾝份证号码验证(⼩程序版)<view class='bgw'><form>......<view class='ipt-wrapper'><view class='ipt-l'>⾝份证</view><view class='ipt-r'><input type='text' placeholder='请输⼊您的⾝份证号' name="idcard" value='{{idcard}}' bindinput="bindIdcard"/><image src='{{icon}}' class='right-arrow'></image></view></view>.....</form></view><view class='submit' bindtap='submit'>提交预约</view><!-- 弹出层 --><view class='mask' wx:if="{{maskState}}" bindtap='hidelayer'></view><!-- 表单出错 --><view class='layer' wx:if="{{warnState}}"><image src='{{excitedicon}}' class='infoicon'></image><view class='info'>{{errorinfo}}</view><view class='btn-small' bindtap='hidelayer'>好的</view></view>....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];Page({/*** 页⾯的初始数据*/data: {name: '',phone: '',idcard: '',errorinfo: '',maskState: false,warnState: false,},// 关闭弹出层hidelayer:function(){this.setData({maskState: false,warnState: false,errState: false,okState: false})},// 表单提交submit:function(){var idcard = this.data.idcard;var reg = /^1\d{10}$/;if (this.isBlank(idcard)) {this.setData({maskState: true,warnState: true,errorinfo: '⾝份证号不能为空'})return}if (!this.IdCardValidate(idcard)){this.setData({maskState: true,warnState: true,errorinfo: '⾝份证号格式错误'})return}},IdCardValidate:function (idCard) {idCard = this.trim(idCard.replace(/ /g, "")); //去掉字符串头尾空格if(idCard.length == 15) {return this.isValidityBrithBy15IdCard(idCard); //进⾏15位⾝份证的验证} else if (idCard.length == 18) {var a_idCard = idCard.split(""); // 得到⾝份证数组if (this.isValidityBrithBy18IdCard(idCard) && this.isTrueValidateCodeBy18IdCard(a_idCard)) { //进⾏18位⾝份证的基本验证和第18位的验证return true;} else {return false;}} else {return false;}},/*** 判断⾝份证号码为18位时最后的验证位是否正确* @param a_idCard ⾝份证号码数组* @return*/isTrueValidateCodeBy18IdCard:function(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]; // 加权求和}var valCodePosition = sum % 11; // 得到验证码所位置if (a_idCard[17] == ValideCode[valCodePosition]) {return true;} else {return false;}},/*** 验证18位数⾝份证号码中的⽣⽇是否是有效⽣⽇* @param idCard 18位书⾝份证字符串* @return*/isValidityBrithBy18IdCard:function (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*/isValidityBrithBy15IdCard:function (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;}},//去掉字符串头尾空格trim:function (str) {return str.replace(/(^\s*)|(\s*$)/g, "");},// 判断是否为空isBlank:function(_value) {if (_value == null || _value == "" || _value == undefined) {return true;}return false;},bindIdcard: function (e) {this.setData({idcard: e.detail.value})},})。
javascript验证身份证号
javascript验证⾝份证号我们在做互联⽹⽹站时,注册个⼈资料时,经常要⽤到⾝份证号,我们需要对⾝份证进验证,不然别⼈随便输个号码就通过,让你感觉这个⽹站做得很shit。
⾝份证号是有规则的。
结构和形式 1.号码的结构 公民⾝份号码是特征组合码,由⼗七位数字本体码和⼀位校验码组成。
排列顺序从左⾄右依次为:六位数字地址码,⼋位数字出⽣⽇期码,三位数字顺序码和⼀位数字校验码。
2.地址码 表⽰编码对象常住户⼝所在县(市、旗、区)的⾏政区划代码,按GB/T2260的规定执⾏。
3.出⽣⽇期码 表⽰编码对象出⽣的年、⽉、⽇,按GB/T7408的规定执⾏,年、⽉、⽇代码之间不⽤分隔符。
4.顺序码 表⽰在同⼀地址码所标识的区域范围内,对同年、同⽉、同⽇出⽣的⼈编定的顺序号,顺序码的奇数分配给男性,偶数分配给⼥性。
5.校验码 根据前⾯⼗七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。
计算⽅法1、将前⾯的⾝份证号码17位数分别乘以不同的系数。
从第⼀位到第⼗七位的系数分别为: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、通过上⾯得知如果余数是3,就会在⾝份证的第18位数字上出现的是9。
如果对应的数字是2,⾝份证的最后⼀位号码就是罗马数字x。
例如:某男性的⾝份证号码为【530102************】,我们看看这个⾝份证是不是合法的⾝份证。
⾸先我们得出前17位的乘积和【(5*7)+(3*9)+(0*10)+(1*5)+(0*8)+(2*4)+(1*2)+(9*1)+(2*6)+(0*3)+(0*7)+(5*9)+(0*10)+(8*5)+(0*8)+(1*4)+(1*2)】是189,然后⽤189除以11得出的结果是189/11=17----2,也就是说其余数是2。
javascript验证香港身份证的格式或真实性
javascript验证⾹港⾝份证的格式或真实性话不多说,请看代码function IsHKID(str) {var strValidChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"// basic check lengthif (str.length < 8)return false;// handling bracketif (str.charAt(str.length-3) == '(' && str.charAt(str.length-1) == ')')str = str.substring(0, str.length - 3) + str.charAt(str.length -2);// convert to upper casestr = str.toUpperCase();// regular expression to check pattern and splitvar hkidPat = /^([A-Z]{1,2})([0-9]{6})([A0-9])$/;var matchArray = str.match(hkidPat);// not match, return falseif (matchArray == null)return false;// the character part, numeric part and check digit partvar charPart = matchArray[1];var numPart = matchArray[2];var checkDigit = matchArray[3];// calculate the checksum for character partvar checkSum = 0;if (charPart.length == 2) {checkSum += 9 * (10 + strValidChars.indexOf(charPart.charAt(0)));checkSum += 8 * (10 + strValidChars.indexOf(charPart.charAt(1)));} else {checkSum += 9 * 36;checkSum += 8 * (10 + strValidChars.indexOf(charPart));}// calculate the checksum for numeric partfor (var i = 0, j = 7; i < numPart.length; i++, j--)checkSum += j * numPart.charAt(i);// verify the check digitvar remaining = checkSum % 11;var verify = remaining == 0 ? 0 : 11 - remaining;return verify == checkDigit || (verify == 10 && checkDigit == 'A');}在⽹上找了很久都没合意的验证⽅式,最后通过Google找到⼀个国外写的js验证,发现可以使⽤。
js格式验证大全
js格式验证⼤全1.⾝份证号码验证:var Common = {//⾝份证号验证IsIdCardNo: function (IdCard) {var reg = /^\d{15}(\d{2}[0-9X])?$/i;if (!reg.test(IdCard)) {return false;}if (IdCard.length == 15) {var n = new Date();var y = n.getFullYear();if (parseInt("19" + IdCard.substr(6, 2)) < 1900 || parseInt("19" + IdCard.substr(6, 2)) > y) {return false;}var birth = "19" + IdCard.substr(6, 2) + "-" + IdCard.substr(8, 2) + "-" + IdCard.substr(10, 2);if (!Common.IsDate(birth)) {return false;}}if (IdCard.length == 18) {var n = new Date();var y = n.getFullYear();if (parseInt(IdCard.substr(6, 4)) < 1900 || parseInt(IdCard.substr(6, 4)) > y) {return false;}var birth = IdCard.substr(6, 4) + "-" + IdCard.substr(10, 2) + "-" + IdCard.substr(12, 2);if (!Common.IsDate(birth)) {return false;}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 = IdCard.charAt(i);iVal = parseInt(iC);iSum += iVal * iW[i];}iJYM = iSum % 11;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 = IdCard.charAt(17).toLowerCase();if (cCheck != sJYM) {return false;}}return true;},//⽇期验证IsDate: function (strDate) {var strSeparator = "-"; //⽇期分隔符var strDateArray;var intYear;var intMonth;var intDay;var boolLeapYear;strDateArray = strDate.split(strSeparator);if (strDateArray.length != 3) return false;intYear = parseInt(strDateArray[0], 10);intMonth = parseInt(strDateArray[1], 10);intDay = parseInt(strDateArray[2], 10);if (isNaN(intYear) || isNaN(intMonth) || isNaN(intDay)) return false;if (intMonth > 12 || intMonth < 1) return false;if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intDay > 31 || intDay < 1)) return false;if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intDay > 30 || intDay < 1)) return false;if (intMonth == 2) {if (intDay < 1) return false;boolLeapYear = false;if ((intYear % 100) == 0) {if ((intYear % 400) == 0) boolLeapYear = true;}else {if ((intYear % 4) == 0) boolLeapYear = true;}if (boolLeapYear) {if (intDay > 29) return false;}else {if (intDay > 28) return false;}}return true;}};2.QQ号码Common.Valid = {//验证qq号码QQNum: function (str) {var reg = /^\s*\d{4,12}\s*$/g;return reg.test(str);},//空或有效格式验证器EmptyOrValid: function (validFunc) {var func = validFunc;if ($.type(validFunc) == "string")func = this[$.trim(validFunc)];return function (str) {return $.trim(str) === "" || func(str);}}};3.⼿机号码、电话号码、传真验证:$(function () {String.prototype.isMobile = function () {return (/^(?:13\d|15[012356789]|18[0256789]|147)-?\d{5}(\d{3}|\*{3})$/.test($.trim(this)));}String.prototype.isTel = function () {//"兼容格式: 国家代码(2到3位)-区号(2到3位)-电话号码(7到8位)-分机号(1-4位)"return (/^(([0\+]\d{2,3}-)?(0\d{2,3}\-)?([2-9]\d{6,7})+(\-\d{1,4})?$/.test($.trim(this)));}String.prototype.isTelMobile = function () {//"兼容格式: 国家代码(2到3位)-区号(2到3位)-电话号码(7到8位)-分机号(1-4位)"return (/^(([0\+]\d{2,3}-)?(0\d{2,3}\-)?([2-9]\d{6,7})+(\-\d{1,4})?|(?:13\d|15[012356789]|18[0256789]|147)-?\d{5}(\d{3}|\*{3}))?$/.test($.trim(this))); }});使⽤⽰例如下:if ($.trim($("#Phone").val()) != "" || $.trim($("#Fax").val()) != "") {if (!$.trim($("#Phone").val()).isTel()) {Common.ShowInfo("请输⼊正确的电话号码!");return;}if (!$.trim($("#Fax").val()).isTel()) {Common.ShowInfo("请输⼊正确的传真号!");return;}}if ($.trim($("#MobilePhone").val()) != "") {if (!$.trim($("#MobilePhone").val()).isMobile()) {Common.ShowInfo("请输⼊正确的⼿机号码!");return;}}$(function () {});密码验证(不能包含空格)String.prototype.hasSpace = function () {return (/(^\s+)|(\s+$)|(^\S*\s*\S$)/.test($.trim(this)));};if($("#Password").val().hasSpace()){//判断 //}。
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身份证校验正则
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校 验 身 份 证 号 码
// 身份证校验 check_id_card(code) {
code = code.toUpperCase();
// 前2位城市码 let city = { 11: "北京", 12: "天津", 13: "河北", 14: "山西", 15: "内蒙古", 21: "辽宁", 22: "吉林", 23: "黑龙江", 31: "上海", 32: "江苏", 33: "浙江", 34: "安徽", 35: "福建", 36: "江西", 37: "山东", 41: "河南", 42: "湖北", 43: "湖南", 44: "广东 // 加权因子 let factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; // 校验位 let parity = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2]; // 身份证简单正则 let Reg = /^\d{6}(18|19|20)?\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/; // 身份证号码数组 let arr_code = code.split('');
// 校验编码为空,简单正则,城市编码 if (!code || !Reg.test(code) || !city[code.substr(0, 2)] || code.length !== 18) { return false; }
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实现身份证校验与信息提取
使⽤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>效果图:如果需要显⽰籍贯的话,需要那对应的数字去数据库中查找显⽰。
身份证验证——精选推荐
⾝份证验证// 函数参数必须是字符串,因为⼆代⾝份证号码是⼗⼋位,⽽在javascript中,⼗⼋位的数值会超出计算范围,造成不精确的结果,导致最后两位和计算的值不⼀致,从⽽该函数出现错误。
// 详情查看javascript的数值范围function checkIDCard(idcode){// 加权因⼦var weight_factor = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];// 校验码var check_code = ['1', '0', 'X' , '9', '8', '7', '6', '5', '4', '3', '2'];var code = idcode + "";var last = idcode[17];//最后⼀个var seventeen = code.substring(0,17);// ISO 7064:1983.MOD 11-2// 判断最后⼀位校验码是否正确var arr = seventeen.split("");var len = arr.length;var num = 0;for(var i = 0; i < len; i++){num = num + arr[i] * weight_factor[i];}// 获取余数var resisue = num%11;var last_no = check_code[resisue];// 格式的正则// 正则思路/*第⼀位不可能是0第⼆位到第六位可以是0-9第七位到第⼗位是年份,所以七⼋位为19或者20⼗⼀位和⼗⼆位是⽉份,这两位是01-12之间的数值⼗三位和⼗四位是⽇期,是从01-31之间的数值⼗五,⼗六,⼗七都是数字0-9⼗⼋位可能是数字0-9,也可能是X*/var idcard_patter = /^[1-9][0-9]{5}([1][9][0-9]{2}|[2][0][0|1][0-9])([0][1-9]|[1][0|1|2])([0][1-9]|[1|2][0-9]|[3][0|1])[0-9]{3}([0-9]|[X])$/;// 判断格式是否正确var format = idcard_patter.test(idcode);// 返回验证结果,校验码和格式同时正确才算是合法的⾝份证号码return last === last_no && format ? true : false;}⾝份证号码分为五部分,⽐如:512501************1.1. 1-6位:[512501],表⽰⾏政区划的代码。
JavaScript验证18位身份证号码最后一位正确性的实现代码
JavaScript验证18位⾝份证号码最后⼀位正确性的实现代码根据⾝份证号码推算出最后⼀位的正确性,如果不正确还会给出正确结果,⾮常有意思的⼀断程序。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>javascript 18位⾝份证号码最后⼀位校验码</title></head><body><script>function getIDChar18(id) {var arr = id.split(''), sum = 0, vc = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];for (var i = 0; i < 17; i++) sum += vc[i] * parseInt(arr[i]);return ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'][sum % 11];}function ValidID(id) {if (/^\d{18}$/.test(id)) {var c = id.charAt(17), rc = getIDChar18(id);if (c == rc) showRst('您输⼊的18位⾝份证号码正确!<br>⽣⽇:' + id.substr(6, 8) + '<br>性别:' + ['⼥', '男'][parseInt(id.charAt(16)) % 2]);else showRst('您输⼊的18位⾝份证号码检验码错误,18位校验码应该为' + rc + '!');}else showRst('请输⼊18位数字的⾝份证号码!');}function showRst(msg) {document.getElementById('rst').innerHTML=msg }</script><input type="text" onblur="ValidID(this.value)" /><div id="rst"></div></body></html>。
JS支持带x身份证号码验证函数
JS⽀持带x⾝份证号码验证函数<script type="text/javascript">alert(isIdCardNo("440781************"));//--⾝份证号码验证-⽀持新的带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);var error;var varArray = new Array();var intValue;var lngProduct = 0;var intCheckDigit;var intStrLen = num.length;var idNumber = num;// initializeif ((intStrLen != 15) && (intStrLen != 18)) {//error = "输⼊⾝份证号码长度不对!";//alert(error);//frmAddUser.txtIDCard.focus();return false;}// check and set valuefor(i=0;i<intStrLen;i++) {varArray[i] = idNumber.charAt(i);if ((varArray[i] < '0' || varArray[i] > '9') && (i != 17)) {//error = "错误的⾝份证号码!.";//alert(error);//frmAddUser.txtIDCard.focus();return false;} else if (i < 17) {varArray[i] = varArray[i]*factorArr[i];}}if (intStrLen == 18) {//check datevar date8 = idNumber.substring(6,14);if (checkDate(date8) == false) {//error = "⾝份证中⽇期信息不正确!.";//alert(error);return false;}// calculate the sum of the productsfor(i=0;i<17;i++) {lngProduct = lngProduct + varArray[i];}// calculate the check digitintCheckDigit = 12 - lngProduct % 11;switch (intCheckDigit) {case 10:intCheckDigit = 'X';break;case 11:intCheckDigit = 0;break;case 12:intCheckDigit = 1;break;}// check last digitif (varArray[17].toUpperCase() != intCheckDigit) {//error = "⾝份证效验位错误!...正确为: " + intCheckDigit + "."; //alert(error);return false;}}else{ //length is 15//check datevar date6 = idNumber.substring(6,12);if (checkDate(date6) == false) {//alert("⾝份证⽇期信息有误!.");return false;}}//alert ("Correct.");return true;}function checkDate(date){return true;}</script>。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
// 988058查号网,骗子号码查询(http:// )
//一下是验证身份证号码的js函数
function checkIdcard(idcard){
var Errors=new Array(
"验证通过!",
"身份证号码位数不对!",
"身份证号码出生日期超出范围或含有非法字符!",
"身份证号码校验错误!",
"身份证地区非法!"
);
var area={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:"国外"}
var retflag=false;
var idcard,Y,JYM;
var S,M;
var idcard_array = new Array();
idcard_array = idcard.split("");
//地区检验
if(area[parseInt(idcard.substr(0,2))]==null) return Errors[4];
//身份号码位数及格式检验
switch(idcard.length){
case 15:
if ( (parseInt(idcard.substr(6,2))+1900) % 4 == 0 || ((parseInt(idcard.substr(6,2))+1900) %
100 == 0 && (parseInt(idcard.substr(6,2))+1900) % 4 == 0 )){
ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9] |[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$/;//测试出生日期的合法性
}
else {
ereg=/^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9] |[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$/;//测试出生日期的合法性
}
if(ereg.test(idcard))
return Errors[0];
else
{
return Errors[2];
}
break;
case 18:
//18位身份号码检测
//出生日期的合法性检查
//闰年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[ 1-2][0-9]))
//平年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1 [0-9]|2[0-8]))
if ( parseInt(idcard.substr(6,4)) % 4 == 0 || (parseInt(idcard.substr(6,4)) % 100 == 0 && parseInt(idcard.substr(6,4))%4 == 0 ))
{
ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1 -9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$/;//闰年出生日期的合法性正则表达式}
else
{
ereg=/^[1-9][0-9]{5}19[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1 -9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$/;//平年出生日期的合法性正则表达式
}
if(ereg.test(idcard)){//测试出生日期的合法性
//计算校验位
S = (parseInt(idcard_array[0]) + parseInt(idcard_array[10])) * 7
+ (parseInt(idcard_array[1]) + parseInt(idcard_array[11])) * 9
+ (parseInt(idcard_array[2]) + parseInt(idcard_array[12])) * 10
+ (parseInt(idcard_array[3]) + parseInt(idcard_array[13])) * 5
+ (parseInt(idcard_array[4]) + parseInt(idcard_array[14])) * 8
+ (parseInt(idcard_array[5]) + parseInt(idcard_array[15])) * 4
+ (parseInt(idcard_array[6]) + parseInt(idcard_array[16])) * 2
+ parseInt(idcard_array[7]) * 1
+ parseInt(idcard_array[8]) * 6
+ parseInt(idcard_array[9]) * 3 ;
Y = S % 11;
M = "F";
JYM = "10X98765432";
M = JYM.substr(Y,1);//判断校验位
if(M == idcard_array[17]) return Errors[0]; //检测ID的校验位
else return Errors[3];
}
else return Errors[2];
break;
default:
return Errors[1];
break;
}
}。