根据中国大陆的身份证号码规则,倒数第二位数字是用来表示性别的,奇数代表男性,偶数代表女性。而生日则可以通过身份证号码的前6位数字后的六位数得知。下面是一个使用JavaScript来实现根据身份证号判断性别和生日的示例代码:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> 身份证<input type="text" id="sfz" onchange="tific()"> 性别<input type="text" id="xb"> 生日<input type="text" id="sr"> <script> // 根据身份证号显示性别生日 function tific() { let IDNu = document.getElementById('sfz'); // 获取身份证号的输入框 console.log(IDNu); var re = /^\d{6}(((19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])\d{3}([0-9]|x|X))|(\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])\d{3}))$/; // 身份证正则表达式 if (!re.test(IDNu.value)) { // 测试身份证是否正确 alert("身份证号码有误,请重新填写!"); IDNu.focus(); //location.replace(""); return false; } else { alert('身份证正确') } var str = IDNu.value; console.log(str); var born_border = document.getElementById('sr'); // 获取生日输入框 try { if (typeof(eval(born_border)) == "undefined") { //alert('参数born_border为空'); } else { born_border.value = str.substring(6, 10) + "-" + str.substring(10, 12) + "-" + str.substring(12, 14); } } catch (e) { //alert('参数born_border错误'); } //性别 let sew = '' var sec = str.substring(16, 17); var sex = document.getElementById('xb'); // 获取性别输入框 if (sec % 2 == 0) { sew = "女"; } else { sew = "男"; } console.log(sew); sex.value = sew; for (i = 0; i < sex.length; i++) if (sex.options[i].value == sew) { sex.options[i].selected = true; } } </script> </body> </html>