限制字符串输入——正则表达式(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, "用户名")
    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

3、结束语

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

转载请注明出处:http://blog.csdn.net/zlts000/article/details/38021335

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏jeremy的技术点滴

写py2、py3兼容的代码

9248
来自专栏峰会SaaS大佬云集

C#学习---基础入门(四)C#中的字符与字符串

字符 char(单个字符) 用单引号 ,例如char a=‘a’;可以通过调用char类下的方法进行一些操作,具体通过help查看其相关方法

1274
来自专栏编程之旅

Objective-C开发编码规范

其实大多数的时间,我们写出来的代码并不仅仅是给自己看的,在协同开发中还有很多人会来Review你的代码,因此,为了不让别人吐槽自己的代码,必须要养成良好的习惯,...

1185
来自专栏Golang语言社区

go语言中的数组切片:特立独行的可变数组

初看go语言中的slice,觉得是可变数组的一种很不错的实现,直接在语言语法的层面支持,操作方面比起java中的ArrayList方便了许多。但是在使用了一段时...

3484
来自专栏Golang语言社区

【Go 语言社区】Golang源码解读之map

golang的map实现并不是像c++一样使用红黑树,而是使用了hashmap,用数组来实现。 详细的实现后续补充,这里先做个备忘。 在iterate整个map...

3053
来自专栏Pythonista

Python3编程技巧

Microsoft Excel是Microsoft为使用Windows和Apple Macintosh操作系统的计算机编写的一款电子表格软件。直观的界面、出色的...

1092
来自专栏Python爬虫实战

Google Python风格规范(上)

好的代码风格,给人舒服的感觉,今天介绍一下谷歌的Python风格规范,由于规范比较多,将分为两次介绍。

1122
来自专栏盛国存的专栏

A Bite of GoLang(上)

A bite of GoLang(浅尝GoLang),本文只是Go语言的冰山一角,本文包含作者学习Go语言期间积累的一些小的经验,同时为了方便让读者了解到Go语...

55610
来自专栏coder修行路

Go 处理yaml类型的配置文件

先说一下,这里用到了很多关于反射类型的功能,可能刚开始看代码,如果对反射不熟悉的可能会不是非常清晰,但是同时也是为了更好的理解golang中的反射,同时如果后面...

2000
来自专栏水击三千

ARCGIS接口详细说明

ArcGIS接口详细说明 目录 ArcGIS接口详细说明... 1 1.      IField接口(esriGeoDatabase)... 2 2.     ...

4246

扫码关注云+社区

领取腾讯云代金券