限制字符串输入--正则表达式

概述
在我们做项目的时候总是需要对输入的内容进行限制,不能输入特殊字符,防止sql注入等,当用户进行输入后的时候,对输入内容要判断是否为空,然后再对各种内容类型进行判断,比如;卡号、学号、金额等只能输入数字,有些信息只能输入字母,或者将一些信息的输入设为只能输入数字和字母。
实现这个功能用常规的方法,直接用ASCII码进行设置的话,就感觉有点复杂,现在我们一起来认识认识程序员必备的七种技能之一的“正则表达式”。
什么是正则表达式?
正则表达式就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
怎么使用正则表达式?
在UI层写一个公共模块类

Module CheckModule1
    '定义结构体Term  
    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

    '定义一个term类型的结构体数组  
    Public arrayControl() As Term
    ''' <summary>    
    ''' 判断数组中控件的Text属性是否为空,并给出相应提示    
    ''' </summary>    
    ''' <param name="arrayControl">需要遍历的结构体数组</param>    
    ''' <returns>返回Boolean值,true表示为空,false表示不为空</returns>    
    Public Function CheckIsEmpty(ByVal arrayControl() As Term) 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       '判断文本框内容是否为空  
                    MessageBox.Show(termControl.strText & "不能为空哦!", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                    termControl.controlSub.Focus()                  '为空控件得到焦点  
                    Return True
                    Exit Function
                End If
            ElseIf TypeOf termControl.controlSub Is ComboBox Then   '判断控件是否为组合框   
                If termControl.controlSub.Text.Trim = "" Then       '判断组合框内容是否为空  
                    MessageBox.Show(termControl.strText & "不能为空哦!", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                    termControl.controlSub.Focus()                  '为空控件得到焦点  
                    Return True
                    Exit Function
                End If
            End If
        Next
        Return False
    End Function
    Public Function AllEmpty(ByVal arrayControl() As Term) As Boolean
        Dim termControl As Term                                     '声明一个Term类型变量termControl  
        '遍历结构体数组中的所有元素,清空其text属性  
        For Each termControl In arrayControl                        '遍历结构体数组中所有元素  
            If TypeOf termControl.controlSub Is TextBox Or TypeOf termControl.controlSub Is ComboBox Then
                termControl.controlSub.Text = ""                    '如果是文本框或组合框则清空  
            End If
        Next
        Return True
    End Function


    Public Const C_REGULAR_LenNum = "^[A-Za-z0-9]+$"         '只能输入由数字和26个英文字母组成的字符  
    Public Const C_REGULAR_NumLimit = "^\\d{6,18}$"          '只能输入6至16位的数字。  
    Public Const C_REGULAR_Chinese = "^[u4e00-u9fa5]"         '只能输入汉字的字符

    ''' <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


End Module

在其他的窗体调用

 '判断用户输入是否合法(数字和字母)  
        Call Rdim()
        Dim strPattern = C_REGULAR_LenNum        '正则表达式  
        Dim Warning As String = "只能输入由数字和26个英文字母组成的字符"
        If CheckRegular(arrayControl, strPattern, Warning) = False Then
            Exit Sub
        End If

猜你喜欢

转载自blog.csdn.net/m18330808841/article/details/80711937