请问在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
如果计算获取的验证码和身份证最后一位相同,则有效!

转载于:https://www.cnblogs.com/meimao5211/p/3338651.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值