加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

机房重构--正则表达式

发布时间:2020-12-13 22:31:45 所属栏目:百科 来源:网络整理
导读:上一篇文章对输入框的内容是否为空做出了判断,这篇文章,将介绍一种方法,对输入框的字段内容作出限制---正则表达式 什么是正则表达式? 正则表达式 ,又称 正规表示法 、 常规表示法 ,计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列

上一篇文章对输入框的内容是否为空做出了判断,这篇文章,将介绍一种方法,对输入框的字段内容作出限制---正则表达式

什么是正则表达式?

正则表达式,又称正规表示法常规表示法,计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。

正则表达式应用:

例如要在EMAIL格式的字符串(如wangyi@163.com)中分解出用户名和服务器名,可以定义如下的正则表达式(?<user>[^@]+)@(?<host>.+),然后使用相应的解析器进行解析,得到两个分组user组和host组,user组里存储用户名wangyi,host组里存放服务器名163.com,而用传统的方法是很难实现这种分解的。

在VB.NET中使用正则表达式必须先引入命名空间System.Text.RegularExpressions,该命名空间包含一下七个类:Regex、Match、MatchCollection、GroupCollection、CaptureCollection、Group、Capture。
Regex类表示不可变(只读)正则表达式类,设置待匹配字符串的模式。Match类表示正则表达式匹配操作的结果。MatchCollection 类表示成功的非重叠匹配的序列,即匹配后得到的字符串集合。在正则表达式中应用最多的就是这三个类。

实践篇:

下面是对注册用户的过程中,输入框内容进行限制。

首先,是在模块中封装正则表达式定义过程

Imports System.Text.RegularExpressions
Module Module2
    Public Const C_REGULAR_NumLimit = "^d{1,10}$"           '卡号长度为10个以内字节的正则表达式
    Public Const C_REGULAR_Chinese = "^[u4e00-u9fa5]{0,}$"  '只能输入汉字的正则表达式

    ' 检测输入字符串是否匹配正则表达式项  
    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.controlsub.Text + "栏 - -!" + Warning,"友情提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
                        termControl.controlsub.Focus()       '为空控件得到焦点  
                        Return False
                        Exit Function
                    End If
                End If
            End If
        Next
        Return True
    End Function
End Module
然后,接上篇的实例化Term结构体数组过程,在窗体中重定义两个数组。

  Public Sub RdimNum()
        ReDim Preserve arrayControl(4)  '重定义数字数组维数  
        '初始化数组  
        arrayControl(0) = New Term(txtCardNo,"卡号")
        arrayControl(1) = New Term(txtCash,"充值金额")
        arrayControl(2) = New Term(txtStudentNo,"学号")
        arrayControl(3) = New Term(txtGrade,"年级")
        arrayControl(4) = New Term(txtClass,"班级")

    End Sub
    Public Sub RdimStrNum()
        ReDim Preserve arrayControl(1)  '重定义字符数组维数  
        '初始化数组
        arrayControl(0) = New Term(txtDepartment,"系别")
        arrayControl(1) = New Term(txtName,"姓名")
    End Sub
最后就是在注册窗体中调用的过程。

 '判断用户输入是否合法(数字)。
        Call RdimNum()
        Dim strPattern = C_REGULAR_NumLimit        '正则表达式  
        Dim Warning As String = "只能输入1-10个数字"
        If CheckRegular(arrayControl,strPattern,Warning) = False Then
            Exit Sub
        End If
        '判断用户输入是否合法(字母)。
        Call RdimStrNum()
        Dim pattern = C_REGULAR_Chinese    '正则表达式  
        Dim Warn As String = "只能输入汉字"
        If CheckRegular(arrayControl,pattern,Warn) = False Then
            Exit Sub
        End If

总结:正则表达式的特点是:
1. 灵活性、逻辑性和功能性非常的强;
2. 可以迅速地用极简单的方式达到字符串的复杂控制。
3. 对于刚接触的人来说,比较晦涩难懂。
百度一下,会找到很多的关于正则表达式的字符串规则。在这里只是提到一些皮毛,在以后的学习中多多实践,减少代码的重复。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读