zoukankan      html  css  js  c++  java
  • 利用正则表达式来设置最大输入字符长度

            在做机房合作的时候,很多东西都进行了“改革”,听二牛说输入的字符长度限制可以用正则表达式,当然限制字符长度不仅可以用这种方法来写,还有通过设置文本框属性等办法来解决。不过利用正则表达式,我还是没没想到。反正正则表达式都学过了,为什么不能拿过来用呢?让它和我原来的方法比试比试。

    一、ascii码小试

    之前的代码是利用ascii码来编写的:

    '限制输入的字符长度为0-16之间
    Private Sub txtcardno_LostFocus()
        If Not Len(txtcardno) = 0 And Len(txtcardno) < 1 Or Len(txtcardno) > 16 Then
            MsgBox "卡号由1-16个字母和数字组成"
            txtcardno.SetFocus
            txtcardno.SelLength = Len(txtcardno.Text)
            End If
    End Sub

    这样的话,每个窗体的每个文本框都需要写一遍代码,重复,重复,一直重复着,如何把它们封装起来呢?到大神出场了........

    二、正则表达式出场

    公共部分:

    添加一个类


    添加正则表达式的引用

    Imports System.Text.RegularExpressions   '添加正则表达式的引用
    <pre name="code" class="vb"> '只能输入15位字符串的正则表达式
        Public Const C_REGULAR_Length = "^.{0,15}$"
        '只能输入15位数字的正则表达式
        Public Const C_REGULAR_Number = "^d{0,15}$"
    
    #Region "检测输入字符串是否匹配正则表达式项"
        ''' <summary>
        ''' 检测输入字符串是否匹配正则表达式项
        ''' </summary>
        ''' <param name="strPattern">正则表达式项</param>
        ''' <param name="TextReg">输入字符串</param>
        ''' <returns>返回结果是否匹配</returns>
        ''' <remarks>2015-6-1 9:36:39</remarks>
        Public Function funCheckRegular(ByVal strPattern As String, TextReg As String)
            Return Regex.IsMatch(TextReg, strPattern)
        End Function
    #End Region
    #Region "具体执行的判断函数,判断是否输入数字"
        ''' <summary>
        ''' 具体执行的判断函数,判断是否输入数字
        ''' </summary>
        ''' <param name="arrayControl">结构体数组</param>
        ''' <returns>True则表示匹配,false则不匹配</returns>
        ''' <remarks>2015-6-1 9:36:39</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) Then
                        Else
                            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 Region

    
    
     

    在需要调用的窗体上:

    重新定义数组维数

    Private Sub RdimNumber()
            ReDim Preserve arrayControl(2)    '重定义数组维数
            '初始化数组
            arrayControl(0) = New Term(txtCardID, "卡号")
            arrayControl(1) = New Term(txtCash, "充值金额")
        End Sub

    在click事件中添加

    '检查输入是否合法(是否为数字)
            Call RdimNumber()
            Dim strPattern As String = C_REGULAR_Number
            Dim Warning As String = "请输入15位以内的数字!"
            If CheckRegular(arrayControl, strPattern, Warning) = False Then
                Exit Sub
            End If

    这样就可以利用正则表达式来检查文本框是否为空了,输入什么都不担心,就这么任性O(∩_∩)O~


      
    总结:

             通过一个简单的限制输入字符长度深深的印证了那句只有想不到的,没有做不到的,B/S的东西用到C/S里,就是这么任性O(∩_∩)O哈!


  • 相关阅读:
    iOS实时查看App运行日志
    Jmeter-使用Ultimate Thread Group插件来设置负载场景
    Flask使用Flask-SQLAlchemy操作MySQL数据库
    使用requests库提交multipart/form-data 格式的请求
    spark 性能调优(一) 性能调优的本质、spark资源使用原理、调优要点分析
    一、spark错误
    sqoop 补充
    Hbase—— rowkey 过滤器(rowfilter)
    spark 调优——基础篇
    scala 的安装 与 IDEA安装使用
  • 原文地址:https://www.cnblogs.com/chenxiaochan/p/7237615.html
Copyright © 2011-2022 走看看