2013-07-02 90 views
0

我應該在前言中聲明Visual Basic不是我的母語,但我正在維護一個傳統程序,直到它可以移植到不同的語言。Visual Basic RegularExpression僅數字

我們有一個用於輸入數量的文本框。這個數量應該只是整數,並且沒有被驗證。一個小數潛入數據庫,我被要求添加輸入驗證。我試過了正則表達式。

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

任何見解?這將不勝感激。

+0

整數是'{0,1,2,3 ....}'..你想要小數點的數字進行驗證 – Anirudha

回答

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 

另一種選擇是使用t他靜Integer.TryParse ...

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

是的,正則表達式很好,我把一個已經被解析的數量的副本傳遞給我的函數,而一個未分析的副本正在寫入數據庫!沒有人喜歡接管一個認爲他是程序員的SystemAdmin項目。我喜歡你的縮短版本,謝謝! – eidsonator

1

我不認爲你需要的正則表達式又..

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

我只需要整數(整數)我認爲IsNumeric woud對小數返回true ,還是我誤解了? – eidsonator

+0

@eidsonator ..我錯過了..對不起..它已更新 – matzone

+0

IsNumeric是如此無用的原因,它包含8個數字+ 1個字母數字,它仍然保持返回「真」,就像沒有字母數字,但有一個字母數字在那裏.. –

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 
+0

如果'Boolean'是首選的返回類型,那麼你總是可以檢查'sb.ToString()'的長度並查看它是否大於零。如果是這樣,那麼你有一個有效的整數('True');否則不會('False')。這當然需要將函數語法改爲'Public Function KeepNumbers(input As String)As Boolean'。 –

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 

在此之後,您接受其正確或由「退出子」終止,如果它不正確。