JavaScript身份证与电话号码验证函数

需积分: 22 12 下载量 47 浏览量 更新于2024-09-19 收藏 17KB DOCX 举报
该资源是一组JavaScript代码,用于验证身份证号码和电话号码(包括手机号)的有效性。提供了两个主要函数:`checkId`用于验证身份证号码,`checkPhone`和`checkMobile`分别用于验证电话号码和手机号码。 在JavaScript中,对身份证号码和电话号码进行验证通常是为了确保用户在表单提交时输入的信息是准确和有效的,以减少错误数据的处理,并提高用户体验。以下是这两个功能的具体实现和相关知识点: 1. **身份证号码验证**: - `checkId`函数未在提供的代码中完全展示,但通常会涉及到以下步骤: - 检查身份证号码长度,中国公民身份证号码为18位。 - 检查前6位,对应地区编码。 - 检查第7到14位,代表出生日期,应符合日期格式。 - 检查第15到17位,是顺序码和性别码,奇数代表男性,偶数代表女性。 - 最后一位是校验码,可以通过特定算法计算得出,如Luhn算法。 2. **电话号码验证**: - `checkPhone`函数使用正则表达式验证电话号码。它首先检查电话号码是否为空,然后使用正则表达式`p1`来匹配常见的电话号码格式,例如区号加电话号码,两者之间以破折号分隔。 - 如果电话号码不符合正则表达式,函数将返回`false`,提示用户输入的电话号码有误。 3. **手机号码验证**: - `checkMobile`函数通过多个正则表达式检查手机号码。它依次尝试匹配13、153、159、0开头的固定电话、150、158以及其他15开头的手机号码格式。 - 当手机号码匹配到任何一种正则模式时,函数返回`true`,表示手机号码有效。 在实际应用中,这些验证函数可能需要根据业务需求进行调整,比如添加更多号段的支持,或者更严格的格式检查。同时,为了保护用户隐私,验证过程中通常不建议直接显示完整的身份证号码或电话号码,而是在前端进行简单的格式检查即可。更复杂的验证通常会在服务器端进行,以确保数据安全。
2010-02-10 上传
自己写的比较全js验证,供大家参考 //身份证验证 function checkIdcard(idcard1,showMsg){ var idcard=this.trim(idcard1);// 对身份证号码做处理。去除头尾空格。 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 idcard,Y,JYM; var S,M; var idcard_array = new Array(); idcard_array = idcard.split(""); /*基本校验*/ if(idcard == "" || idcard == null || idcard.length == 0) { if(showMsg==null||showMsg=="") alert("身份证号为空,请输入您的身份证号!"); return false; } /*地区检验*/ if(area[parseInt(idcard.substr(0,2))]==null) { if(showMsg==null||showMsg=="") alert(Errors[4]); return false; } /*身份号码位数及格式检验*/ 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)){ //alert(Errors[0]+"15"); return true; //15位验证通过 } else { if(showMsg==null||showMsg=="") alert(Errors[2]); return false; } break; case 18: //18位身份号码检测 //出生日期的合法性检查 //闰年月日:((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06