我应首先说明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
就小数点而言,这是有用的:.1
和1.0
返回false;但是,a1212
或433498e
等字母数字字符串会返回True
有什么见解?非常感谢。
答案 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”终止。