C#winform中如何限制txtbox输入只能是数字和特定字母X,我想做一个身份证号码得输入框!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#winform中如何限制txtbox输入只能是数字和特定字母X,我想做一个身份证号码得输入框!相关的知识,希望对你有一定的参考价值。
C#winform中如何限制txtbox输入只能是数字和特定字母X,我想做一个身份证号码得输入框!
C#身份证验证因做项目需要,参考网上资料写了一个身份证验证的C#方法,本方法是在VS2005[C/S] 下写的。
/*
* 理论部分:
* 15位身份证号码=6位地区代码+6位生日+3位编号
* 18位身份证号码=6位地区代码+8位生日+3位编号+1位检验码
*
* 各省市地区国家代码前两位代码是:
* 北京 11 吉林 22 福建 35 广东 44 云南 53 天津 12 黑龙江 23 江西 36 广西 45 西藏 54 河北 13 上海 31 山东 37 海南 46 陕西 61 山西 14 江苏 32 河南 41 重庆 50
甘肃 62 内蒙古 15 浙江 33 湖北 42 四川 51 青海 63 辽宁 21 安徽 34 湖南 43 贵州 52 宁夏 64 新 疆 65 台湾 71 香港 81 澳门 82 国外 91
*18位身份证标准在国家质量技术监督局于1999年7月1日实施的GB11643-1999《公民身份号码》中做了明确规定。
*GB11643-1999《公民身份号码》为GB11643-1989《社会保障号码》的修订版,其中指出将原标准名称“社会保障号码”更名为“公民身份号码”,另外GB11643-1999《公民身份号码》从实施之日起代替GB11643-1989。
*公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码。其含义如下:
*1. 地址码:表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按GB/T2260的规定执行。
*2. 出生日期码:表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日分别用4位、2位、2位数字表示,之间不用分隔符。
*3. 顺序码:表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。
*校验的计算方式:
*1. 对前17位数字本体码加权求和
*公式为:S = Sum(Ai * Wi), i = 0, ... , 16
*其中Ai表示第i位置上的身份证号码数字值,Wi表示第i位置上的加权因子,其各位对应的值依次为:
*7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
*2. 以11对计算结果取模
*Y = mod(S, 11)
*3. 根据模的值得到对应的校验码对应关系为:
*Y值: 0 1 2 3 4 5 6 7 8 9 10
*校验码: 1 0 X 9 8 7 6 5 4 3 2
*/
代码
1 /// <summary>
2 /// 身份证验证
3 /// </summary>
4 /// <param name="Id">身份证号</param>
5 /// <returns></returns>
6 public bool CheckIDCard(string Id)
7
8 if (Id.Length == 18)
9
10 bool check = CheckIDCard18(Id);
11 return check;
12
13 else if (Id.Length == 15)
14
15 bool check = CheckIDCard15(Id);
16 return check;
17
18 else
19
20 return false;
21
22
23 /// <summary>
24 /// 18位身份证验证
25 /// </summary>
26 /// <param name="Id">身份证号</param>
27 /// <returns></returns>
28 private bool CheckIDCard18(string Id)
29
30 long n = 0;
31 if (long.TryParse(Id.Remove(17), out n) == false || n < Math.Pow(10, 16) || long.TryParse(Id.Replace('x', '0').Replace('X', '0'), out n) == false)
32
33 return false;//数字验证
34
35 string address = "11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91";
36 if (address.IndexOf(Id.Remove(2)) == -1)
37
38 return false;//省份验证
39
40 string birth = Id.Substring(6, 8).Insert(6, "-").Insert(4, "-");
41 DateTime time = new DateTime();
42 if (DateTime.TryParse(birth, out time) == false)
43
44 return false;//生日验证
45
46 string[] arrVarifyCode = ("1,0,x,9,8,7,6,5,4,3,2").Split(',');
47 string[] Wi = ("7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2").Split(',');
48 char[] Ai = Id.Remove(17).ToCharArray();
49 int sum = 0;
50 for (int i = 0; i < 17; i++)
51
52 sum += int.Parse(Wi[i]) * int.Parse(Ai[i].ToString());
53
54 int y = -1;
55 Math.DivRem(sum, 11, out y);
56 if (arrVarifyCode[y] != Id.Substring(17, 1).ToLower())
57
58 return false;//校验码验证
59
60 return true;//符合GB11643-1999标准
61
62 /// <summary>
63 /// 15位身份证验证
64 /// </summary>
65 /// <param name="Id">身份证号</param>
66 /// <returns></returns>
67 private bool CheckIDCard15(string Id)
68
69 long n = 0;
70 if (long.TryParse(Id, out n) == false || n < Math.Pow(10, 14))
71
72 return false;//数字验证
73
74 string address = "11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91";
75 if (address.IndexOf(Id.Remove(2)) == -1)
76
77 return false;//省份验证
78
79 string birth = Id.Substring(6, 6).Insert(4, "-").Insert(2, "-");
80 DateTime time = new DateTime();
81 if (DateTime.TryParse(birth, out time) == false)
82
83 return false;//生日验证
84
85 return true;//符合15位身份证标准
86 参考技术A 使用正则表达式 \d3-\d8|\d4-\d7
foundMatch = Regex.IsMatch(SubjectString, 正则表达式");
asp.net中应该有那个属性,winform中应该没有吧~@~
用代码写吧~~! 参考技术B 可以用正则表达式验证。 /\d1,/ 参考技术C 用正则表达式验证:
15位或18位正则
^\d15$/ | ^\d17(?:\d|x)$/ 参考技术D 在txtbox的Key_Press事件里写如下代码:
if ((e.KeyChar < 48 || e.KeyChar > 57) && (e.KeyChar != 8) &&e.KeyChar!='X')
e.Handled = true; 本回答被提问者和网友采纳
js验证如何限制文本框只能输入数字
麻烦哪位大侠能帮忙解决一下...非常感谢了.代码最好写上注释哈 !
1.js验证只能输入数字.
2.js验证只能输入字母.数字和下划线.
3.js验证固定电话:只能是数字.并且有相应的格式028-67519441 或者 0839-8777222或者 028-6545124
js进行数据校验使用正则表达式会简单很多,如下所示:
1.js验证只能输入数字:
具体代码如下:
function check_validate1(value)
var reg = /^/d+$/; // 定义正则表达式
if( value.constructor === String ) // 判断传入的是否是字符串
var re = value.match( reg ); // 规则校验
return true;
return false;
2.js验证只能输入字母.数字和下划线:
具体代码如下:
function check_validate2(value)
var reg = /^/w+$/;
if( value.constructor === String ) // 判断传入的是否是字符串
var re = value.match( reg );
return true;
return false;
3.js验证固定电话:只能是数字.并且有相应的格式,如(xxx-xxxxxxx 或者 xxxx-xxxxxxx):
具体代码如下:
function check_validate(value)
var reg = /^(/d3,4)-(/d7,8)/;
if( value.constructor === String ) // 判断传入的是否是字符串
var re = value.match( reg );
return true;
return false;
参考技术A1、只能输入数字
function chkPrice(obj)
obj.value = obj.value.replace(/[^/d.]/g,"");
//必须保证第一位为数字而不是.
obj.value = obj.value.replace(/^/./g,"");
//保证只有出现一个.而没有多个.
obj.value = obj.value.replace(//.2,/g,".");
//保证.只出现一次,而不能出现两次以上
obj.value = obj.value.replace(".","$#$").replace(//./g,"").replace("$#$",".");
function chkLast(obj)
// 如果出现非法字符就截取掉
if(obj.value.substr((obj.value.length - 1), 1) == '.')
obj.value = obj.value.substr(0,(obj.value.length - 1));
2、只能输入英文字母和数字
<input onkeyup="value=value.replace(/[^\\w\\.\\/]/ig,'')">
扩展资料:
js限制文本框只能输入数字方法小结
有时需要限制文本框输入内容的类型,本节分享下正则表达式限制文本框只能输入数字、小数点、英文字母、汉字等代码。
例如,输入大于0的正整数
代码如下:
<input onkeyup="if(this.value.length==1)this.value=this.value.replace(/[^1-9]/g,'')elsethis.value=this.value.replace(/\\D/g,'')" onafterpaste="if(this.value.length==1)this.value=this.value.replace(/[^1-9]/g,'')elsethis.value=this.value.replace(/\\D/g,'')">
参考技术Bjs限制文本框只能输入数字方法,有时需要限制文本框输入内容的类型,正则表达式限制文本框只能输入数字、小数点、英文字母、汉字等代码。
一、输入大于0的正整数代码:
<input onkeyup="if(this.value.length==1)this.value=this.value.replace(/[^1-
9]/g,'')elsethis.value=this.value.replace(/\\D/g,'')" onafterpaste="if(this.value.length==1)
this.value=this.value.replace(/[^1-9]/g,'')elsethis.value=this.value.replace(/\\D/g,'')">
二、文本框只能输入数字代码(小数点也不能输入)代码:
<input onkeyup="this.value=this.value.replace(/\\D/g,'')"
onafterpaste="this.value=this.value.replace(/\\D/g,'')">
三、只能输入数字,能输小数点代码:
<input onkeyup="if(isNaN(value))execCommand('undo')"
onafterpaste="if(isNaN(value))execCommand('undo')">
<input name=txt1 onchange="if(/\\D/.test(this.value))alert('只能输入数字');this.value='';">
四、数字和小数点方法二代码:
<input type=text t_value="" o_value="" onkeypress="if(!this.value.match(/^[\\+\\-]?\\d*?\\.?
\\d*?$/))this.value=this.t_value;else this.t_value=this.value;if(this.value.match(/^(?:[\\+\\-]?\\d+
(?:\\.\\d+)?)?$/))this.o_value=this.value" onkeyup="if(!this.value.match(/^[\\+\\-]?\\d*?\\.?\\d*?
$/))this.value=this.t_value;else this.t_value=this.value;if(this.value.match(/^(?:[\\+\\-]?\\d+
(?:\\.\\d+)?)?$/))this.o_value=this.value" onblur="if(!this.value.match(/^(?:[\\+\\-]?\\d+(?:\\.\\d+)?|\\.\\d*?)
$/))this.value=this.o_value;elseif(this.value.match(/^\\.\\d+$/))this.value=0+this.value;if(this.
value.match(/^\\.$/))this.value=0;this.o_value=this.value">
五、只能输入字母和汉字:
<input onkeyup="value=value.replace(/[\\d]/g,'')
"onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[\\d]/g,'
'))" maxlength=10 name="Numbers">
六、只能输入英文字母和数字,不能输入中文:
<input onkeyup="value=value.replace(/[^\\w\\.\\/]/ig,'')">
七、只能输入数字和英文:
<input onKeyUp="value=value.replace(/[^\\d|chun]/g,'')">
八:小数点后只能有最多两位(数字,中文都可输入),不能输入字母和运算符号:
<input onKeyPress="if((event.keyCode<48 || event.keyCode>57) && event.keyCode!=46 ||
/\\.\\d\\d$/.test(value))event.returnValue=false">
九、小数点后只能有最多两位(数字,字母,中文都可输入),可以输入运算符号:
<input onkeyup="this.value=this.value.replace(/^(\\-)*(\\d+)\\.(\\d\\d).*$/,'$1$2.$3')">
参考技术Cjs验证只能输入数字:
function check_validate1(value)
//定义正则表达式部分
var reg = /^\\d+$/;
if( value.constructor === String )
var re = value.match( reg );
return true;
return false;
js验证只能输入字母,数字和下划线:
function check_validate2(value)
var reg = /^\\w+$/;
if( value.constructor === String )
var re = value.match( reg );
return true;
return false;
js验证固定电话:只能是数字,并且有相应的格式//028-67519441 或者 0839-8777222或者 028-6545124
function check_validate(value)
var reg = /^(\\d3,4)-(\\d7,8)/;
if( value.constructor === String )
var re = value.match( reg );
return true;
return false;
扩展资料:
JS代码在优化中:
尽量减少JS代码的运用,减少统计代码数量,装的越多越会影响打开速度,每增加一个要慎之又慎。
网站的打开速度属于基础体验,如果打开速度很慢超过6秒了,那么网站在优化体验方面将会是很差的。
页面的打开速度几乎是起到致命作用的,对于代码真正决定取舍的人是SEO。
JS要放到网站的底部,先加载正文,再加载JS代码。
JS合并,减少JS加载次数。
.JS代码减肥,工具:pagespeed,百度统计,启用GZIP压缩。
参考资料:js代码-百度百科
html部分:
<input value="" type="text" onkeyup="javascript:RepNumber(this)">
JavaScript部分:
function RepNumber(obj)
var reg = /^[\d]+$/g;
if (!reg.test(obj.value))
var txt = obj.value;
txt.replace(/[^0-9]+/, function (char, index, val) //匹配第一次非数字字符
obj.value = val.replace(/\D/g, "");//将非数字字符替换成""
var rtextRange = null;
if (obj.setSelectionRange)
obj.setSelectionRange(index, index);
else //支持ie
rtextRange = obj.createTextRange();
rtextRange.moveStart('character', index);
rtextRange.collapse(true);
rtextRange.select();
)
以上是关于C#winform中如何限制txtbox输入只能是数字和特定字母X,我想做一个身份证号码得输入框!的主要内容,如果未能解决你的问题,请参考以下文章
c# 的WinForm 中 textbox内如何限制只输入为0-100之间的数字?
C#中如何限制Textbox控件中只能输入数字,要能用退格的
winform中如何控制一个textbox,输入身份证的时候只能是半角,如果是全角的话输入值怎样切换成半角字符?
C#开发wince平台下的winform程序,textbox的keypress事件无法触发,本意是想限制textbox只能输入数字。