VB.NET机房收费系统之正则表达式

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

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

    下面就VB.NET应用实例来说明正则表达式对输入框的内容限制:

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

Imports System.Text.RegularExpressions
Module Module1

    Public Const C_REGULAR_NumLimit = "^\d{0,9}$"           '只能输入0~9的数字的正则表达式  
    Public Const C_REGULAR_Chinese = "^[\u4e00-\u9fa5]{0,}$"  '只能输入汉字的正则表达式  


    ''' <summary>
    ''' 检测输入字符串是否匹配正则表达式项  
    ''' </summary>
    ''' <param name="strPattern"></param>
    ''' <param name="TextReg"></param>
    ''' <returns></returns>
    Public Function funCheckRegular(ByVal strPattern As String, TextReg As String)
        Return Regex.IsMatch(TextReg, strPattern)
    End Function

    ''' <summary>
    '''  具体执行的判断函数,判断是否输入数字 
    ''' </summary>
    ''' <param name="arrayControl"></param>
    ''' <param name="strPattern"></param>
    ''' <param name="Warning"></param>
    ''' <returns></returns>
    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
    ''' <summary>
    ''' 定义结构体
    ''' </summary>
    Public Structure Term
        Dim controlSub As Control
        Dim strText As String
        Sub New(ByVal controlSub As Control, ByVal strText As String)
            With Me
                .controlSub = controlSub
                .strText = strText
            End With
        End Sub
    End Structure

    ''' <summary>
    ''' 定义Term类型的结构体数组
    ''' </summary>
    Public arrayControl() As Term
    Dim Panel As Control
End Module

     然后,在编辑的窗体中重定义两个数组,实例化Term结构体数组,再在需要的时候调用它。

Public Sub Rdim()  
      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 Rdim()  
       Dim strPattern = C_REGULAR_NumLimit        '正则表达式    
       Dim Warning As String = "只能输入0-9个数字"  
       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. 可以迅速地用极简单的方式达到字符串的复杂控制。

     刚开始接触正则表达式,以后要多多学习。

     
       




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 17
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值