做一个表单项目需要提交个人信息,名字、性别、年龄、身份证号、出生日期及电话号码。于是我就想到用javascript加正则规则来验证身份证号码、手机号及座机号码,同时通过身份证号来提取出生日期及性别,并计算出年龄。
检测身份证代码如下:
//获取ID为sfz的输入框的值; sfz=$("#sfz").val(); //身份证正则规则; var reg = /(^\d{17}(\d|X)$)/; if (reg.test(sfz) === false) { alert('身份证格式不对!'); //return false; }else{ //获取出生日期; var re_eighteen = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/; var arr_data = sfz.match(re_eighteen); // 正则取号码内所含出年月日数据 var year = arr_data[2]; var month = arr_data[3]; var day = arr_data[4]; //通过函数转换成时间格式; var sr = new Date(year + '/' + month + '/' + day); //这里是给ID为csrq的输入框赋值; $("#csrq").val(sr.getTime()/1000); //计算年龄; var xzsj = new Date(); var nj= xzsj.getFullYear() - sr.getFullYear() //getMonth函数获取月份是从0开始 var xzy = xzsj.getMonth()+1; var xzr = xzsj.getDate(); if(xzy<10) xzy='0'+xzy; if(xzr<10) xzr='0'+xzr; if (parseInt('1' + xzy + xzr) < parseInt('1' + month + day)) { nj-=1; } //给ID为nj的输入框赋值; $("#nj").val(nj); //判断性别 if (parseInt(sfz.charAt(16)) % 2 == 0) { //给ID为xb的输入框赋值; $("#xb").val(0); // 女生 }else{ $("#xb").val(1); // 男生 } }
检测手机及座机代码如下:
//参数为dh时执行js; if(cs=='dh'){ //获取输入框的值; dh=$("#"+cs).val(); //手机号和座机号码(除了7位数的座机号码还有8开头的8位座机号码)的正则规则; var reg = /^(1[3|4|5|7|8|9]\d{9}|8?\d{7})$/; if (reg.test(dh) === false) { alert('电话号码格式不对!'); //return false; } }