在我的应用程序中,我需要以不同的形式验证手机号码文本字段。所以我想写一个 为此目的的功能。我的需求是:
文本字段接受仅限数字(0-9)。 如果输入任何其他竖框,将显示错误消息。 不允许空格,但允许ctrl + c,ctrl + v,ctrl + x ans back sapce 。 如果 ctrl + v(粘贴)完成,它将检查字符串是否包含 charectors ,如果是,则显示错误消息。 有没有人可以帮助我用有限数量的代码编写这样的函数?
我已经验证了以下
Private Sub mob_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles stok.KeyPress
If Asc(e.KeyChar) < 48 Or Asc(e.KeyChar) > 57 Then ' check whether the keypress is a number
mob.ForeColor = Color.green
Else
mob.ForeColor = Color.Red
end if
end sub
Private Sub mob_LostFocus(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles stok.KeyPress
if mob.text="" then 'for check empty space
end sub
但这不是我需要的。我需要在函数中执行的所有过程
答案 0 :(得分:1)
我认为正则表达式最适合您的需求,请看一下:
http://www.authorcode.com/how-to-use-regular-expression-for-validating-phone-numbers-in-net/
作为旁注:我发现Asc(e.KeyChar)非常难看,我会将char解析为int并看看会发生什么:如果int.TryParse()失败:错误,如果不是:那么它是一个数字
答案 1 :(得分:0)
Public Sub mob_validation(ByVal e As System.Windows.Forms.KeyPressEventArgs, ByVal mob As TextBox)
If e.KeyChar = Chr(22) Then
Dim output As String = New String((From c As Char In Clipboard.GetText.ToString Select c Where Char.IsLetter(c)).ToArray())
If output = "" And Len(mob.Text) = 10 Then
mob.ForeColor = Color.Green
Else
mob.ForeColor = Color.Red
Clipboard.Clear()
End If
Else
If Asc(e.KeyChar) < 48 Or Asc(e.KeyChar) > 57 Then
If Asc(e.KeyChar) <> 8 Then
If Asc(e.KeyChar) <> 3 Then
e.Handled = True
mob.ForeColor = Color.Red
End If
End If
Else
mob.ForeColor = Color.Green
End If
End If
End Sub