constchangeIdCard=(e: any)=>{
let value = e.target.value;const rule =/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[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)$/;if(rule.test(value)){
let sex =getBirthdayFromIdCard(value,2);let birthday =getBirthdayFromIdCard(value,1);
form.setFieldsValue({
'sex': sex ==='男'?1:2});
form.setFieldsValue({
'birthday':moment(birthday, dateFormat)});}};
封装getBirthdayFromIdCard,根据身份证号提取生日、性别信息
exportconstgetBirthdayFromIdCard=(idCard:string, type:number)=>{
let birthday ="";let sex ="";let birth ="";if(idCard !=null&& idCard !=""){
if(idCard.length ==15){
birthday ="19"+ idCard.substr(6,6);
sex =parseInt(idCard.substring(14,1),10)%2?"男":"女";
birth = idCard.substring(3,7);}elseif(idCard.length ==18){
birthday = idCard.substr(6,8);
sex =parseInt(idCard.substring(17,1),10)%2?"男":"女";
birth = idCard.substring(6,10);}
birthday = birthday.replace(/(.{4})(.{2})/,"$1-$2-");}if(type ===1)return birthday;if(type ===2)return sex;if(type ===3){
let myDate =newDate();
myDate.getFullYear();returnparseInt(myDate.getFullYear())-parseInt(birth);}}