【个人机房重构】——限制字符串输入(正则表达式)

前端之家收集整理的这篇文章主要介绍了【个人机房重构】——限制字符串输入(正则表达式)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

前言:在做机房时,对于文本框输入字符串的各种限制,我想应该是每个人心中挥之不去的痛。不过听过有种高大上的方式,可以解决这个问题。



一、概述


在做机房收费系统的时候,几乎所有的窗体上都存在着文本框或者组合框,当用户进行操作的时候,首先要判断是否为空,然后再对各种属性进行判断,比如;卡号、学号、金额等只能输入数字,有些信息只能输入字母,或者将一些信息的输入设为只能输入数字和字母。举个例子,我们注册邮箱的时候,就会有一些特定字符的设置:


下面是163邮箱注册页面


在我们做机房收费系统时,如果用常规的方法,直接用ASCII码进行设置的话,就感觉有点复杂,现在我们一起来认识认识程序员必备的七种技能之一的“正则表达式”。



二、什么是正则表达式?


首先看一张漫画:




正则表达式就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。


举个例子:只能输入数字:“^[0-9]*$”。

只能输入汉字:“^[\u4e00-\u9fa5]{0,}$”。

只能输入由26个英文字母组成的字符串:“^[A-Za-z]+$”。



三、怎么使用正则表达式?


下面就一起来看看怎么使用它。

咱们以添加新用户的窗体为例:


[plain] view plain copy
  1. PublicConstC_REGULAR_LenNum="^[A-Za-z0-9]+$"'只能输入由数字和26个英文字母组成的字符
  2. PublicConstC_REGULAR_NumLimit="^\\d{6,16}$"'只能输入6至16位的数字。

@H_754_301@

  1. '检测输入字符串是否匹配正则表达式项
  2. PublicFunctionfunCheckRegular(ByValstrPatternAsString,TextRegAsString)
  3. ReturnRegex.IsMatch(TextReg,strPattern)
  4. EndFunction

  5. '具体执行的判断函数,判断是否输入数字
  6. PublicFunctionCheckRegular(ByValarrayControl()AsTerm,ByValstrPatternAsString,WarningAsString)AsBoolean
  7. DimtermControlAsTerm'声明一个Term类型变量termControl
  8. '遍历结构体数组中的所有元素,如果控件文本输入不合法,则给出相应返回值
  9. ForEachtermControlInarrayControl'遍历结构体数组中所有元素
  10. IfTypeOftermControl.controlSubIsTextBoxThen'判断控件是否为文本框
  11. IftermControl.controlSub.Text.Trim<>""Then'判断文本框内容是否为空,不为空往下执行
  12. IffunCheckRegular(strPattern,termControl.controlSub.Text)=FalseThen
  13. MessageBox.Show(termControl.strText+"栏--!"+Warning,"友情提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
  14. termControl.controlSub.Focus()'为空控件得到焦点
  15. ReturnFalse
  16. ExitFunction
  17. EndIf
  18. EndIf
  19. Next
  20. ReturnTrue
  21. EndFunction


下面的代码是在界面层(UI)如何调用

@H_754_301@
    PublicSubRdimStrNum()
  1. ReDimPreservearrayControl(0)'重定义数组维数
  2. '初始化数组
  3. arrayControl(0)=NewTerm(txtUserID,"用户名")
  4. EndSub
  5. PublicSubRdimNum()
  6. ReDimPreservearrayControl(1)'重定义数组维数
  7. arrayControl(0)=NewTerm(txtUserPWD,"密码")
  8. arrayControl(1)=NewTerm(txtConfirm,"确认密码")
  9. EndSub

@H_754_301@
    '判断用户输入是否合法(数字和字母)
  1. CallRdimStrNum()
  2. DimstrPattern=C_REGULAR_LenNum'正则表达式
  3. DimWarningAsString="只能输入由数字和26个英文字母组成的字符"
  4. IfCheckRegular(arrayControl,strPattern,Warning)=FalseThen
  5. ExitSub
  6. '判断用户输入是否合法(数字)
  7. CallRdimNum()
  8. Dimpattern=C_REGULAR_NumLimit'正则表达式
  9. DimWarnAsString="请输入6至16位数字"
  10. EndIf

三、结束语


在程序员日常工作中,数据处理占据了相当的比重。而所有的数据之中文本又占据了相当的比重。文本能够被人理解、具有良好的透明性,利于系统开发、测试和维护等就必需要有一定规律遵循一种规则,而正则表达式正是我们所需要的,它提供给我们强大的字符串处理的能力。


做机房个人版重构的时候,采用的是传统的限制字符串输入的方式。不过,在看到这篇文章后,眼前豁然一亮的感觉。看到“正则表达式”,顿感高大上。

有时候,我们一直在原地踏步、停滞不前。其实,我们缺少的就是一种发现新事物、并努力去尝试新事物的勇气。


转自:http://www.jb51.cc/article/p-rpygsorj-pb.html

猜你在找的正则表达式相关文章