前言:在做机房时,对于文本框输入字符串的各种限制,我想应该是每个人心中挥之不去的痛。不过听过有种高大上的方式,可以解决这个问题。
一、概述
在做机房收费系统的时候,几乎所有的窗体上都存在着文本框或者组合框,当用户进行操作的时候,首先要判断是否为空,然后再对各种属性进行判断,比如;卡号、学号、金额等只能输入数字,有些信息只能输入字母,或者将一些信息的输入设为只能输入数字和字母。举个例子,我们注册邮箱的时候,就会有一些特定字符的设置:
下面是163邮箱注册的页面
在我们做机房收费系统时,如果用常规的方法,直接用ASCII码进行设置的话,就感觉有点复杂,现在我们一起来认识认识程序员必备的七种技能之一的“正则表达式”。
二、什么是正则表达式?
首先看一张漫画:
正则表达式就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
举个例子:只能输入数字:“^[0-9]*$”。
只能输入汉字:“^[u4e00-u9fa5]{0,}$”。
只能输入由26个英文字母组成的字符串:“^[A-Za-z]+$”。
三、怎么使用正则表达式?
下面就一起来看看怎么使用它。
咱们以添加新用户的窗体为例:
- PublicConstC_REGULAR_LenNum="^[A-Za-z0-9]+$"'只能输入由数字和26个英文字母组成的字符
- PublicConstC_REGULAR_NumLimit="^d{6,16}$"'只能输入6至16位的数字。
- '检测输入字符串是否匹配正则表达式项
- PublicFunctionfunCheckRegular(ByValstrPatternAsString,TextRegAsString)
- ReturnRegex.IsMatch(TextReg,strPattern)
- EndFunction
-
- '具体执行的判断函数,判断是否输入数字
- PublicFunctionCheckRegular(ByValarrayControl()AsTerm,ByValstrPatternAsString,WarningAsString)AsBoolean
- DimtermControlAsTerm'声明一个Term类型变量termControl
-
- '遍历结构体数组中的所有元素,如果控件文本输入不合法,则给出相应返回值
- ForEachtermControlInarrayControl'遍历结构体数组中所有元素
- IfTypeOftermControl.controlSubIsTextBoxThen'判断控件是否为文本框
- IftermControl.controlSub.Text.Trim<>""Then'判断文本框内容是否为空,不为空往下执行
- IffunCheckRegular(strPattern,termControl.controlSub.Text)=FalseThen
- MessageBox.Show(termControl.strText+"栏--!"+Warning,"友情提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
- termControl.controlSub.Focus()'为空控件得到焦点
- ReturnFalse
- ExitFunction
- EndIf
- EndIf
- Next
- ReturnTrue
- EndFunction
下面的代码是在界面层(UI)如何调用:
PublicSubRdimStrNum()
- ReDimPreservearrayControl(0)'重定义数组维数
- '初始化数组
- arrayControl(0)=NewTerm(txtUserID,"用户名")
- EndSub
-
- PublicSubRdimNum()
- ReDimPreservearrayControl(1)'重定义数组维数
- arrayControl(0)=NewTerm(txtUserPWD,"密码")
- arrayControl(1)=NewTerm(txtConfirm,"确认密码")
- EndSub
'判断用户输入是否合法(数字和字母)
- CallRdimStrNum()
- DimstrPattern=C_REGULAR_LenNum'正则表达式
- DimWarningAsString="只能输入由数字和26个英文字母组成的字符"
- IfCheckRegular(arrayControl,strPattern,Warning)=FalseThen
- ExitSub
- '判断用户输入是否合法(数字)
- CallRdimNum()
- Dimpattern=C_REGULAR_NumLimit'正则表达式
- DimWarnAsString="请输入6至16位数字"
- EndIf
三、结束语
在程序员日常工作中,数据处理占据了相当的比重。而所有的数据之中文本又占据了相当的比重。文本能够被人理解、具有良好的透明性,利于系统开发、测试和维护等就必需要有一定规律遵循一种规则,而正则表达式正是我们所需要的,它提供给我们强大的字符串处理的能力。
做机房个人版重构的时候,采用的是传统的限制字符串输入的方式。不过,在看到这篇文章后,眼前豁然一亮的感觉。看到“正则表达式”,顿感高大上。
有时候,我们一直在原地踏步、停滞不前。其实,我们缺少的就是一种发现新事物、并努力去尝试新事物的勇气。
转自:http://www.52php.cn/article/p-rpygsorj-pb.html (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|