标签:正则表达式
在做机房合作的时候,很多东西都进行了“改革”,听二牛说输入的字符长度限制可以用正则表达式,当然限制字符长度不仅可以用这种方法来写,还有通过设置文本框属性等办法来解决。不过利用正则表达式,我还是没没想到。反正正则表达式都学过了,为什么不能拿过来用呢?让它和我原来的方法比试比试。
之前的代码是利用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
'检查输入是否合法(是否为数字) 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
总结:
通过一个简单的限制输入字符长度深深的印证了那句只有想不到的,没有做不到的,B/S的东西用到C/S里,就是这么任性O(∩_∩)O哈!
标签:正则表达式
原文地址:http://blog.csdn.net/chenxiaochan/article/details/46300239