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