XAML 文本框验证身份证
开发工具与关键技术:WPF XAML C# 正则
作者:李寿宇
撰写时间:2019/5/14
18位身份证验证:
在新增页面录入资料时特别是个人资料需要输入身份证、联系地址和出生日期······
文本框输入身份证时在输入的过程中录入错误的身份证导致输入的数据不真实。我们在新增数据就作个判断用户输入的身份证是否合法,身份证前六位是个地址码首先判断用户输入前六位地址码号码时是否真确,如果不真确弹出提示框“你输入的身份证号码不合法,请重新输入!”。
如果前面的六位地址码输入正确了我们做剩下12位数做操作了,7位~12位是出生年月日然后根据7位~12位数来回填出生日期的操作,获取当前日期减去出生日期得出年龄把年龄回填到年龄文本框里,身份证倒数第二位性别单数是男的双数是女的,获取身份证17位数字拿他进行判断是否单双数如果是单数回填男否则是女的。
在XAML新增页面身份证文本框添加TextChanged=“txt_idCar_TextChanged” 文本改变事件,在文本事件上转到定义进行编写代码。
1、 首先封装好地址码,当用户输入六位身份证号时那六位数在封装好的类里面进行匹配,匹配上就返回身份证前六位的地址识别码把返回的地址回填到地址文本框里 ,、如果匹配不上弹出提示框“你输入的身份证号码不合法,请重新输入!”
代码如下
if (txt_idCar.Text.ToString().Length == 6)
{
string strAddress = CheckIDCardGetDiQu.LoadAddress(txt_idCar.Text.ToString());
if (strAddress == "")
{
MessageBox.Show("你输入的身份证号码不合法,请重新输入!");
}
else
{
txt_Address.Text = strAddress;
}
}
if (txt_idCar.Text.ToString().Length < 6)
{
txt_Address.Text = "";
}
2、 使用正则表达式判断身份证了如果匹配得上就会填出生日期、年龄和性别,否则弹出提示框MessageBox.Show(“身份证不合法!”);
用正则代码判断如下:
//正则表达式
i
f (!Regex.IsMatch(strIdCard, @"(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)"))
{
MessageBox.Show("身份证不合法!");
txt_idCar.Text = "";
}
3、出生日期、年龄和性别采用字符串截取方式来进行会填。代码如下:
string keys = strIdCard;
int sex = int.Parse(keys.Substring(16, 1)); //性别
string birth_y = keys.Substring(6, 4); //年
string birth_m = keys.Substring(10, 2); //月
string birth_d = keys.Substring(12, 2); //日
ListViewItem l = new ListViewItem();
//绑定出生日期
dtp_Birthday.Text = birth_y + "年" + birth_m + "月" + birth_d + "日";
txt_Age.Text = decAge.ToString().Trim();//绑定年龄
if (sex % 2 == 0) //取余
{
cbo_gender.SelectedValue = 77;//77跟下拉框ID值对应 女
}
else
{
cbo_gender.SelectedValue = 76;//76跟下拉框ID值对应 男
}
4、如下图效果既验证了身份证有会填了个人一些信息
5、如果输入的身份证前六位不是身份证的地址码会弹出提示框提示错误
如下图: