Visual Basic正则表达式仅限数字

时间:2013-07-02 17:31:15

标签: regex vb.net

我应首先说明Visual Basic不是我的母语,但我正在维护一个遗留程序,直到它可以移植到另一种语言。

我们有一个用于输入数量的文本框。此数量应仅为整数,并且未经过验证。小数潜入数据库,我被要求添加输入验证。我试过一个正则表达式。

Function validate_qty(qty As String)
    Dim objRegExp As New System.Text.RegularExpressions.Regex("^\d+$")
    Dim match As System.Text.RegularExpressions.Match = objRegExp.Match(qty)
    If match.Success Then
        Return True
    End If
    Return False
End Function

就小数点而言,这是有用的:.11.0返回false;但是,a1212433498e等字母数字字符串会返回True

有什么见解?非常感谢。

4 个答案:

答案 0 :(得分:2)

除了缩短功能外,我看不到您的RegEx问题......

Private Function validate_qty(Byval qty As String) As Boolean
   Dim objRegExp As New System.Text.RegularExpressions.Regex("^\d+$")
   Return objRegExp.Match(qty).Success
End Function

另一个选择是使用静态Integer.TryParse ...

Private Function validate_qty(Byval qty As String) As Boolean
   Return Integer.TryParse(qty, Nothing)
End Function

答案 1 :(得分:1)

我认为你还不需要正则表达式..

Function validate_qty(qty As String) As Boolean
    if qty.Contains(".") then Return False
    Return IsNumeric(qty)
End Function

答案 2 :(得分:0)

您可以创建一个返回“已清理”字符串的函数(即删除了任何非数字的字符串)

Public Function KeepNumbers(input As String) As String
    Dim sb As New StringBuilder()
    For Each c As Char In input
        If [Char].IsDigit(c) Then
            sb.Append(c)
        End If
    Next
    Return sb.ToString()
End Function

答案 3 :(得分:0)

我也看不到你的正则表达式错误在哪里

但请尝试。

btnSave/formload()
dim num as new regex("^\d+$")

if num.Ismatch(yourtextbox1.text) then    
    yourtextbox1.text="num" 

else 
    yourtextbox.text="invalid num"
    exit sub

end if

在此之后你接受它是否正确,如果它不正确,则以“exit sub”终止。