C#正则表达式文本框验证:只能输入整数和带两位小数的小数
2014-06-22 18:05
806 查看
C#正则表达式文本框验证:只能输入整数和带两位小数的小数
程序界面截图:
本文主要包含以下内容:
测试用例介绍;
测试用例下载地址;
文本框校验的解决思路;
参考资料;
一、测试用例介绍。
1、平台环境:Visual
Studio 2010,C#;
2、测试目的:
对于文本框数据输入的合法性进行自定义限制,本例要求只能够输入整数或小数(若为小数,小数点后只能保留两位)。
3、主要实现功能:
(1)匹配整数;
(2)匹配只保留两位小数位的小数;
(3)自动将全角数字转化为半角数字;
(4)文本框输入长度限制;
(5)文本框输入时禁用输入法;
(6)其他非法输入时锁定本控件,并提示错误。
4、程序界面截图:
如上图所示。
二、测试用例下载地址。
下载地址:测试Demo源码免积分下载
三、文本框校验的解决思路。
对于文本框输入的校验有不同的思路,本例采用了正则表达式匹配的方法。
1、即时验证:
为了即时对文本框内容进行验证,可以利用控件的validating事件,当控件失去焦点时,便会触发该事件。
2、正则表达式:
将要验证的有效格式写成正则表达式,不仅可以方便快捷地进行匹配,而且对于以后需求更改时也易于修改(只需修改正则表达式即可)。
利用正则表达式时,需要添加引用:< usingSystem.Text.RegularExpressions; >
3、验证完成:
验证通过后进行的操作可以使用控件的validated事件。例如,如果在验证不通过时有错误提示的话,那么验证通过时就可以给出验证通过的提示。该事件可根据实际需要选用。
4、正常退出:
在Validating事件中做验证处理时,如果验证不通过,本例希望焦点仍停留在该文本框内,即只有输入合法才能进行其他操作。这样的负作用之一就是用户在输入不合法时也无法正常退出程序,因此为使关闭程序的操作不受文本框验证的影响而正常使用,可以在FormClosing事件中添加e.Cancel=false来解决。
5、限制输入长度:
如果用户不小心压住了某个数字键,此时文本框里已经输入了100多位的数据,而且又恰好点击了“提交”按钮时,你能保证后台代码能接受这个结果吗?你如果也有这样的担心,那就试试控件的maxLength属性吧。
6、禁用输入法:
本例要求只能输入数字,因此如果禁用输入法后会省去很多麻烦。禁用后,无法直接输入中文,也无法“直接”输入全角字符。去查查控件的ImeMode属性,设置为disabled后就可以了。
7、全角字符串的处理:
知道上一步为什么说禁用输入法后无法“直接”输入全角字符吗?因为还可以“间接”输入!是的,那就是将全角字符串复制后粘贴过来。不要以为抽风的人才会这么无聊帮你去找Bug,程序员还是应该尽量把可能的异常先做好预防。(当然,禁用文本框的粘贴功能也不错,本例为照顾用户可能存在的粘贴较长数据的需要,没有禁用。大家可以自行搜下禁用粘贴的资料。)
如果文本框里含全角字符,在后期做数据运算时很容易出问题,本例解决方法是先检查,若是全角字符串则转换为半角字符串。
心得体会:
写出一个完全正确且符合自己要求的正则表达式确实需要好好构思,尤其是匹配内容较复杂时。但也不必担心,如果一个表达式完不成,可以写多个表达式然后“或”运算。在写正则表达式时不要盲目地参看网上已有的表达式,最好做个测试程序验证下,因为不同的语言正则表达式语法会有细微的不同。
对于正则表达式,大家先对照着MSDN上的介绍,熟悉每个符号的意思,再去理解别人写的表达式,慢慢就能写出自己的表达式了。对于正则表达式的理解,不妨想想中学学过的“排列组合”,会有用的。用排列组合把表达式中可能的各个分支完整走一遍,就都懂了。
主要参考代码:(详细代码可查看上面第二步中的“测试程序源码下载”)
四、参考资料。
1、C#正则表达式:参考资料1 参考资料2
2、正则表达式匹配数字:参考资料3
3、C#全角和半角转换:参考资料4
C#正则表达式文本框验证:只能输入整数和带两位小数的小数
程序界面截图:
本文主要包含以下内容:
测试用例介绍;
测试用例下载地址;
文本框校验的解决思路;
参考资料;
一、测试用例介绍。
1、平台环境:Visual
Studio 2010,C#;
2、测试目的:
对于文本框数据输入的合法性进行自定义限制,本例要求只能够输入整数或小数(若为小数,小数点后只能保留两位)。
3、主要实现功能:
(1)匹配整数;
(2)匹配只保留两位小数位的小数;
(3)自动将全角数字转化为半角数字;
(4)文本框输入长度限制;
(5)文本框输入时禁用输入法;
(6)其他非法输入时锁定本控件,并提示错误。
4、程序界面截图:
如上图所示。
二、测试用例下载地址。
下载地址:测试Demo源码免积分下载
三、文本框校验的解决思路。
对于文本框输入的校验有不同的思路,本例采用了正则表达式匹配的方法。
1、即时验证:
为了即时对文本框内容进行验证,可以利用控件的validating事件,当控件失去焦点时,便会触发该事件。
2、正则表达式:
将要验证的有效格式写成正则表达式,不仅可以方便快捷地进行匹配,而且对于以后需求更改时也易于修改(只需修改正则表达式即可)。
利用正则表达式时,需要添加引用:< usingSystem.Text.RegularExpressions; >
3、验证完成:
验证通过后进行的操作可以使用控件的validated事件。例如,如果在验证不通过时有错误提示的话,那么验证通过时就可以给出验证通过的提示。该事件可根据实际需要选用。
4、正常退出:
在Validating事件中做验证处理时,如果验证不通过,本例希望焦点仍停留在该文本框内,即只有输入合法才能进行其他操作。这样的负作用之一就是用户在输入不合法时也无法正常退出程序,因此为使关闭程序的操作不受文本框验证的影响而正常使用,可以在FormClosing事件中添加e.Cancel=false来解决。
5、限制输入长度:
如果用户不小心压住了某个数字键,此时文本框里已经输入了100多位的数据,而且又恰好点击了“提交”按钮时,你能保证后台代码能接受这个结果吗?你如果也有这样的担心,那就试试控件的maxLength属性吧。
6、禁用输入法:
本例要求只能输入数字,因此如果禁用输入法后会省去很多麻烦。禁用后,无法直接输入中文,也无法“直接”输入全角字符。去查查控件的ImeMode属性,设置为disabled后就可以了。
7、全角字符串的处理:
知道上一步为什么说禁用输入法后无法“直接”输入全角字符吗?因为还可以“间接”输入!是的,那就是将全角字符串复制后粘贴过来。不要以为抽风的人才会这么无聊帮你去找Bug,程序员还是应该尽量把可能的异常先做好预防。(当然,禁用文本框的粘贴功能也不错,本例为照顾用户可能存在的粘贴较长数据的需要,没有禁用。大家可以自行搜下禁用粘贴的资料。)
如果文本框里含全角字符,在后期做数据运算时很容易出问题,本例解决方法是先检查,若是全角字符串则转换为半角字符串。
心得体会:
写出一个完全正确且符合自己要求的正则表达式确实需要好好构思,尤其是匹配内容较复杂时。但也不必担心,如果一个表达式完不成,可以写多个表达式然后“或”运算。在写正则表达式时不要盲目地参看网上已有的表达式,最好做个测试程序验证下,因为不同的语言正则表达式语法会有细微的不同。
对于正则表达式,大家先对照着MSDN上的介绍,熟悉每个符号的意思,再去理解别人写的表达式,慢慢就能写出自己的表达式了。对于正则表达式的理解,不妨想想中学学过的“排列组合”,会有用的。用排列组合把表达式中可能的各个分支完整走一遍,就都懂了。
主要参考代码:(详细代码可查看上面第二步中的“测试程序源码下载”)
//以下代码仅为示例,非全部代码,详细请查看下载地址提供的源码 private void tbInput_Validating(object sender, CancelEventArgs e) { string errorMsg; if (!IsNumberic(tbInput.Text.Trim(), out errorMsg)) { e.Cancel = true; tbInput.Select(0, tbInput.Text.Length); this.errorProvider1.SetError(tbInput, errorMsg); //Console.WriteLine("输入非法!!"); } } #region 输入是否合法 public bool IsNumberic(string message, out string errorMsg) { //示例(非全部代码) string temp = @"(^(\d(\.\d{2})?){1}$)"; Regex rex = new Regex(temp); if (rex.IsMatch(message)) { //... } else { //... } } #endregion public static bool IsSDC(string strSDC) { //... } public static string ToDBC(string strSBC) { //... } private void tbInput_Validated(object sender, EventArgs e) { //如果所有条件都满足的话,清除ErrorProvider中的错误信息。 errorProvider1.SetError(tbInput, ""); } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { //这里是为了确保关闭窗口功能不受影响 e.Cancel = false; }
四、参考资料。
1、C#正则表达式:参考资料1 参考资料2
2、正则表达式匹配数字:参考资料3
3、C#全角和半角转换:参考资料4
相关文章推荐
- JS正则表达式 验证 输入的是正负小数(保留3位小数)或者只能输入正负整数
- ASP.NET中服务器控件Button调用javascript代码运用正则表达式验证TextBox中输入的是否为正整数或正小数,符合要求则继续运行服务器端代码功能的实现
- 只能输入整数或小数的正则表达式
- ASP.NET c# textbox 正则表达式 文本框只允许输入数字(验证控件RegularExpressionValidator )
- iput利用正则表达式动态监控数据实现输入金额(限制整数输入位数和两位小数)
- JQuery 正则 限制文本框(input)只能输入数字/限制输入金额为两位小数
- JS,文本框只能输入整数或两位小数的整数
- JS通过正则限制 input 输入框只能输入整数、小数(金额或者现金) 两位小数
- 实现:C#窗体中的文本框只能输入中文汉字,其他输入无效。问:正则表达式怎么用?
- JS通过正则限制 input 输入框只能输入整数、小数(金额或者现金) 两位小数
- JAVA正则表达式验证手机号码、浮点数(保留两位小数)、正整数
- C# 使用js正则表达式,让文本框只能输入数字和字母,最大长度5位
- jquery正则表达式显示文本框输入范围 只能输入数字、小数、汉字、英文字母的方法
- C# 设置文本框等控件只能输入 正负整数或小数
- 只能输入带正负号的整数和小数的正则表达式
- 利用正则表达式, 验证控制文本框的输入字符类型
- 利用正则表达式验证控制文本框的输入字符类型
- 利用正则表达式, 验证控制文本框的输入字符类型
- 用JS限制文本框只能输入数字时的正则表达式问题!
- 利用正则表达式, 验证控制文本框的输入字符类型