以编程方式验证移动电话号码的文本字段

时间:2014-07-17 09:21:08

标签: vb.net

在我的应用程序中,我需要以不同的形式验证手机号码文本字段。所以我想写一个 为此目的的功能。我的需求是:

文本字段接受仅限数字(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

但这不是我需要的。我需要在函数中执行的所有过程

2 个答案:

答案 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