【个人机房重构】——限制字符串输入(正则表达式)
来源:互联网 发布:阿里巴巴标题优化技巧 编辑:程序博客网 时间:2024/06/06 01:54
前言:在做机房时,对于文本框输入字符串的各种限制,我想应该是每个人心中挥之不去的痛。不过听过有种高大上的方式,可以解决这个问题。
一、概述
在做机房收费系统的时候,几乎所有的窗体上都存在着文本框或者组合框,当用户进行操作的时候,首先要判断是否为空,然后再对各种属性进行判断,比如;卡号、学号、金额等只能输入数字,有些信息只能输入字母,或者将一些信息的输入设为只能输入数字和字母。举个例子,我们注册邮箱的时候,就会有一些特定字符的设置:
下面是163邮箱注册的页面
在我们做机房收费系统时,如果用常规的方法,直接用ASCII码进行设置的话,就感觉有点复杂,现在我们一起来认识认识程序员必备的七种技能之一的“正则表达式”。
二、什么是正则表达式?
首先看一张漫画:
正则表达式就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
举个例子:只能输入数字:“^[0-9]*$”。
只能输入汉字:“^[\u4e00-\u9fa5]{0,}$”。
只能输入由26个英文字母组成的字符串:“^[A-Za-z]+$”。
三、怎么使用正则表达式?
下面就一起来看看怎么使用它。
咱们以添加新用户的窗体为例:
- Public Const C_REGULAR_LenNum = "^[A-Za-z0-9]+$" '只能输入由数字和26个英文字母组成的字符
- Public Const C_REGULAR_NumLimit = "^\\d{6,16}$" '只能输入6至16位的数字。
- ' 检测输入字符串是否匹配正则表达式项
- Public Function funCheckRegular(ByVal strPattern As String, TextReg As String)
- Return Regex.IsMatch(TextReg, strPattern)
- End Function
- ' 具体执行的判断函数,判断是否输入数字
- Public Function CheckRegular(ByVal arrayControl() As Term, ByVal strPattern As String, Warning As String) As Boolean
- Dim termControl As Term '声明一个Term类型变量termControl
- '遍历结构体数组中的所有元素,如果控件文本输入不合法,则给出相应返回值
- For Each termControl In arrayControl '遍历结构体数组中所有元素
- If TypeOf termControl.controlSub Is TextBox Then '判断控件是否为文本框
- If termControl.controlSub.Text.Trim <> "" Then '判断文本框内容是否为空,不为空往下执行
- If funCheckRegular(strPattern, termControl.controlSub.Text) = False Then
- MessageBox.Show(termControl.strText + "栏 - -!" + Warning, "友情提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
- termControl.controlSub.Focus() '为空控件得到焦点
- Return False
- Exit Function
- End If
- End If
- End If
- Next
- Return True
- End Function
下面的代码是在界面层(UI)如何调用:
- Public Sub RdimStrNum()
- ReDim Preserve arrayControl(0) '重定义数组维数
- '初始化数组
- arrayControl(0) = New Term(txtUserID, "用户名")
- End Sub
- Public Sub RdimNum()
- ReDim Preserve arrayControl(1) '重定义数组维数
- '初始化数组
- arrayControl(0) = New Term(txtUserPWD, "密码")
- arrayControl(1) = New Term(txtConfirm, "确认密码")
- End Sub
- '判断用户输入是否合法(数字和字母)
- Call RdimStrNum()
- Dim strPattern = C_REGULAR_LenNum '正则表达式
- Dim Warning As String = "只能输入由数字和26个英文字母组成的字符"
- If CheckRegular(arrayControl, strPattern, Warning) = False Then
- Exit Sub
- End If
- '判断用户输入是否合法(数字)
- Call RdimNum()
- Dim pattern = C_REGULAR_NumLimit '正则表达式
- Dim Warn As String = "请输入6至16位数字"
- If CheckRegular(arrayControl, pattern, Warn) = False Then
- Exit Sub
- End If
三、结束语
在程序员日常工作中,数据处理占据了相当的比重。而所有的数据之中文本又占据了相当的比重。文本能够被人理解、具有良好的透明性,利于系统开发、测试和维护等就必需要有一定规律遵循一种规则,而正则表达式正是我们所需要的,它提供给我们强大的字符串处理的能力。
做机房个人版重构的时候,采用的是传统的限制字符串输入的方式。不过,在看到这篇文章后,眼前豁然一亮的感觉。看到“正则表达式”,顿感高大上。
有时候,我们一直在原地踏步、停滞不前。其实,我们缺少的就是一种发现新事物、并努力去尝试新事物的勇气。
转自:http://blog.csdn.net/zlts000/article/details/38021335
- 【个人机房重构】——限制字符串输入(正则表达式)
- 限制字符串输入——正则表达式(VB.NET)
- 限制字符串输入——正则表达式(VB.NET)
- 机房重构--正则表达式
- 机房重构--正则表达式
- 【机房重构】正则表达式
- 【个人机房重构】——SqlHelper
- 机房收费系统个人重构—图(文档)
- 个人重构机房收费系统——类图
- 个人重构机房收费系统——配置文件
- 个人重构机房收费系统——SqlHelper介绍
- 个人重构机房收费系统——报表制作
- 【个人机房重构】——创建数据库三部曲
- 【个人机房重构】——三层架构,系统登录
- 机房收费系统个人重构3——sqlHelper
- 【个人机房重构】——报表ReportViewer
- 机房个人重构——之DataGridview控件
- 【个人机房系统重构】——开篇
- STM32L-Power control(PWR)
- MVC一个入门的例子(二)
- Reactor模式和NIO
- [leetcode] 3Sum
- codeforces-#465A. inc ARG(模拟)
- 【个人机房重构】——限制字符串输入(正则表达式)
- codeforces-#465B. Inbox (100500)(模拟)
- ServletContext方法实例讲解
- 我的linux内核学习之路(送新手)
- 查看linux服务器硬盘IO读写负载
- 开心的小明
- Android 中ScrollView的使用
- top命令分析
- Android 无标题 全屏设置