请问在C#的Winform下如何用正则表达式限制用户只能在textBox中输入18位的身份证号码。

请问在C#的Winform下如何用正则表达式限制用户只能在textBox中输入18位的身份证号码。

2013-06-18 11:07会飞的鱼儿18 | 分类:C#/.NET | 浏览101次
不能有空格和字母字符。
 
2013-06-18 11:28提问者采纳
 
private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == 13)
{
if (Isshenfenzheng(textBox2.Text.Trim()) == true)
{
// MessageBox.Show("OK");
if (textBox2.Text.Trim().Length <= 18)
{
MessageBox.Show("OK");
}
else
{
MessageBox.Show("长度必须等于18");
}

}
else
{
MessageBox.Show("NG");
}
}
}
protected bool Isshenfenzheng(string sfz)
{
return System.Text.RegularExpressions.Regex.IsMatch(sfz, @"^(\d{17}[\d|X])");
}



---------------------------------------------------

[0-9]{6}(19|20)[0-9]{2}[0|1][0-9][0-3][0-9]{4}[0-9|x|X]

这个是身份证编号的简单正则匹配方式(1900-2099年出生的身份证编号 如有需要针对修改)

可以进一步根据身份证号码最后一位的验证码,做有效性判断。判断方法如下:
将身份证的前17位依次对应下列数据相乘后求和:
7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2

将求和的的结果除以11求余数,余数
0-1-2-3-4-5-6-7-8-9-10 对应验证码:
1-0-X -9-8-7-6-5-4-3-2
如果计算获取的验证码和身份证最后一位相同,则有效!
posted @ 2013-09-25 14:10  meimao5211  阅读(1852)  评论(0编辑  收藏  举报