文本框验证

本文介绍文本框验证,主要针对手机号和身份证号。手机号验证需了解其结构,用正则表达式判断准确性;身份证号验证要解析其各部分含义,同样用正则表达式判断,还可根据其信息绑定性别、出生日期、年龄等,输前六位可回填地址。开发工具为Visual Studio 2015。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文本框验证

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

开发工具与关键技术:Visual Studio 2015

作者:朱海恩

撰写时间:2019年6月10日

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

文本框验证,就是给文本框一个查询事件,比如:输入手机号的文本框、输入身份证号的文本框等等,都要进行验证他们的准确性的,因为手机号和身份证号都是有一定的写法的。如果想要通过文本框验证他们的准确性,那么就要先了解他们是由什么组合在一起,这样才可以判断输入的是否正确。验证身份证号和手机号都可以使用正则表达式来判断输入的是否准确性。接下来说说手机号的结构吧!

国内手机号码的规则:前3位为网络识别号;第4-7位为地区编码;第8-11位为用户号码。

现有手机号段:

移动:134 135 136 137 138 139 147 148 150 151 152 157 158 159 172 178 182 183 184 187 188 198

联通:130 131 132 145 146 155 156 166 171 175 176 185 186

电信:133 149 153 173 174 177 180 181 189 199

虚拟运营商:170

整理后:130~139    14[5-9]    15[012356789]    166   17[0-8]    18[0-9]    19[8-9]

手机号码的正则表达式为:^(13[09]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$

 

验证手机号准确性步骤:

  1. 获取控件(文本框)输入值
  2. 判断手机号的长度是否等于11位数
  3. 使用正则表达式判断是否匹配,如果不匹配,提示框提示并且清空文本框输入值

代码如下图所示:

身份证号的结构解析:

  1. 前六位数是地址码:表示编码对象常住户口所在县(市、旗、区)的行政区划代码
  2. 第七位至十四位是出生日期码:表示编码对象出生的年、月、日,年、月、日代码之间不用分隔符。
  3. 第十五位至十七位是顺序码:表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。
  4. 第十八位数是校验码:1 0 X 9 8 7 6 5 4 3 2

所以就可以大致写一个函数来校验是否正确了。

验证身份证号的步骤:

  1. 获取控件(文本框)输入值

string strIdCard = txt_idCar.Text.Trim();

 

  1. 判断身份证号的长度是否等于18位数,如果等于18位数,那么再使用正则表达式来判断身份证的准确性

//闰年出生日期的合法性正则表达式 || 平年出生日期的合法性正则表达式

if (!Regex.IsMatch(strIdCard, @"(^[1-9][0-9]{5}(19|20)[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$)") || !Regex.IsMatch(strIdCard, @"(^[1-9][0-9]{5}(19|20)[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$)"))

{

    MessageBox.Show("身份证不合法!");

    txt_idCar.Text = "";                       

 } 

 

  1. 切割字符串并绑定到相应的文本框

string keys = strIdCard;

//性别

int Sex = int.Parse(keys.Substring(16, 1));

//取余

if (Sex % 2 == 0)

{                           

    cbo_gender.SelectedValue = 77;//77跟下拉框ID值对应

}

else

{                           

    cbo_gender.SelectedValue = 76;//76跟下拉框ID值对应

}

//

string birth_year = keys.Substring(6, 4);

//

string birth_mounth = keys.Substring(10, 2);

//

string birth_day = keys.Substring(12, 2);

//绑定出生日期

dtp_Birthday.Text = birth_ year + "年" + birth_ mounth + "月" + birth_ day + "日";

//获取今年年份

string stringNow = DateTime.Now.Year.ToString();

//把今年转化成数字

decimal decimalNow = Convert.ToDecimal(stringNow);

//获取(截取身份证)出生年份

decimal decbirth_year = Convert.ToDecimal(birth_ year);

//获取虚岁

decimal decimalAge = Convert.ToDecimal(decimalNow - decbirth_year) + 1;

//绑定年龄

txt_Age.Text = decimalAge.ToString().Trim();

 

  1. 输完前六位数后进行一个判断,判断长度是否等于6,如果等于就获取身份证地址

string strAddress = CheckIDCardGetDiQu.LoadAddress(txt_idCar.Text.ToString());

 

输入前六位数回填地址的效果图如图所示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值