身份证验证
附:身份证组成规则
根据《中华人民共和国国家标准GB 11643-1999》中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。顺序码的奇数分给男性,偶数分给女性。校验码是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。
首先写出身份证号,出生日期,年龄,性别几个下拉框并给身份证号写个文本框改变事件
TextChanged=“txt_idCar_TextChanged”,
转到后台身份证号写个文本框改变事件
首先,获取 获取身份证所输入的值
string strShenFengzheng = txt_idCar.Text.Trim();
然后,用if语句判断当输入身份证的值到达18位时,用正则判断身份证号是否符合规定,如果不符合则弹出提示框,提示身份证不合法
if (strShenFengzheng.Length == 18)
{
if (!Regex.IsMatch(strShenFengzheng,@"(\d{15}$)|(^\d{18}$)|(\d{17}(\d|X|x))|(^\d{18})"))
{
MessageBox.Show(“身份证不合法!”);
//清空文本框
txt_idCar.Text = “”;
}
else
{
string keys = strShenFengzheng;
//性别
int sex = int.Parse(keys.Substring(16, 1));
//年
string day_year = keys.Substring(6, 4);
//月
string day_mon = keys.Substring(10, 2);
//日
string day_day = keys.Substring(12, 2);
ListViewItem l = new ListViewItem();
//绑定出生日期
dtp_Birthday.Text = day_year + “年” + day_mon + “月” + day_day + “日”;
//绑定年龄
//1.0 获取今年的年份
string strJinNian = DateTime.Now.Year.ToString();
//1.1 把获取的年份转换成数字
decimal NumJinNian = Convert.ToInt32(strJinNian);
//1.2获取身份证的出生年份
decimal NumShenFengZhen = Convert.ToInt32(day_year);
//1.3获取年龄
decimal NianLi = Convert.ToInt32(NumJinNian -
NumShenFengZhen);
//1.4绑定年龄
txt_Age.Text = NianLi.ToString().Trim();
//绑定性别
//1.1 取余
if (sex % 2 == 0)
{
cbo_gender.SelectedValue = 77; //(女)//77跟下拉框I对应
}
else if (sex % 2 != 0)
{
cbo_gender.SelectedValue = 76;//男 76跟下拉框ID值对应
}
}
}
}
catch (Exception)
{
throw;
}
}