限制字符串输入——正則表達式(VB.NET)
1、概述
在做机房收费系统的时候,差点儿全部的窗口上都存在着文本框或者组合框,当用户进行操作的时候。首先要推断是否为空,然后再对各种属性进行推断,比方;卡号、学号、金额等仅仅能输入数字,有些信息仅仅能输入字母,或者将一些信息的输入设为仅仅能输入数字和字母。举个样例。我们注冊邮箱的时候。就会有一些特定字符的设置:
以下是163邮箱注冊的页面
在我们做机房收费系统时。假设用常规的方法,直接用ASCII码进行设置的话,就感觉有点复杂,如今我们一起来认识认识程序猿必备的七种技能之中的一个的“正則表達式”。
2、什么是正則表達式?
首先看一张漫画:
正則表達式就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
举个样例:仅仅能输入数字:“^[0-9]*$”。
仅仅能输入汉字:“^[\u4e00-\u9fa5]{0,}$”。
仅仅能输入由26个英文字母组成的字符串:“^[A-Za-z]+$”。
3、怎么使用正則表達式?
以下就一起来看看怎么使用它。
咱们以加入新用户的窗口为例:
Public Const C_REGULAR_LenNum = "^[A-Za-z0-9]+$" '仅仅能输入由数字和26个英文字母组成的字符 Public Const C_REGULAR_NumLimit = "^\\d{6,16}$" '仅仅能输入6至16位的数字。
''' <summary> ''' 检測输入字符串是否匹配正則表達式项 ''' </summary> ''' <param name="strPattern">正則表達式项</param> ''' <param name="TextReg">输入字符串</param> ''' <returns>返回结果是否匹配</returns> ''' <remarks><span style="font-family:KaiTi_GB2312;">2014年8月28日16:02:20</span></remarks> Public Function funCheckRegular(ByVal strPattern As String, TextReg As String) Return Regex.IsMatch(TextReg, strPattern) End Function ''' <summary> ''' 详细运行的推断函数,推断是否输入数字 ''' </summary> ''' <param name="arrayControl">结构体数组</param> ''' <returns>True则表示匹配,false则不匹配</returns> ''' <remarks>2014-07-09 10:30:24</remarks> 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, "username") End Sub Public Sub RdimNum() ReDim Preserve arrayControl(1) '重定义数组维数 '初始化数组 arrayControl(0) = New Term(txtUserPWD, "password") arrayControl(1) = New Term(txtConfirm, "确认password") 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
3、结束语
在程序猿日常工作中。数据处理占领了相当的比重。而全部的数据之中文本又占领了相当的比重。文本可以被人理解、具有良好的透明性,利于系统开发、測试和维护等就必须要有一定规律遵循一种规则。而正則表達式正是我们所须要的,它提供给我们强大的字符串处理的能力。
转载请注明出处:http://blog.csdn.net/zlts000/article/details/38021335