2014-12-08 122 views
1

至少一個數字,我使用此代碼如何檢查是否一個文本框包含在VB

If Not s.Contains("1") Or s.Contains("0") Or s.Contains("2") Or _ 
     s.Contains("3") Or s.Contains("4") Or s.Contains("5") Or _ 
     s.Contains("6") Or s.Contains("7") Or s.Contains("8") Or s.Contains("9") Then 
      MsgBox("Password must contain one digit") 
End If 

但是,當我輸入多個數字,這是行不通的。 例如abc1234,它顯示消息"Password must contain one digit",但如果我寫abc1,它的工作原理。

+0

不應該是每s.Contains否(s.Contains(0)或s.contains(1)....) – 2014-12-08 07:37:55

+0

笏你想說 – user3396184 2014-12-08 07:39:28

+0

如果不是(s.Contains( 「1」)或s.Contains(「0」)或s.Contains(「2」)或s.Contains(「3」)或s.Contains(「4」)或s.Contains(「5」)或s.Contains(「6」)或s.Contains(「7」)或s.Contains(「8」)或s.Contains(「9」))然後MsgBox(「密碼必須包含一個數字」)End If – 2014-12-08 07:41:18

回答

2

老實說,我只是在這裏使用正則表達式。

Dim re As New Text.RegularExpressions.Regex("\d") 
If Not re.IsMatch(s) Then 
    MsgBox("Password must contain at least one digit") 
End If 

你完成了! (\d是「任何單個數字」的簡寫形式。)

3

作爲正則表達式解決方案的替代方法,可以使用Char.IsDigit來檢查字符是否爲數字。

Dim str = "pass1234" 
Dim hasDigit = str.ToCharArray().Any(Function(c) Char.IsDigit(c)) 
1

必須使用每個您的代碼工作AndAlso Not ...

If Not s.Contains("1") AndAlso Not s.Contains("0") AndAlso Not s.Contains("2") AndAlso Not _ 
    s.Contains("3") AndAlso Not s.Contains("4") AndAlso Not s.Contains("5") AndAlso Not _ 
    s.Contains("6") AndAlso Not s.Contains("7") AndAlso Not s.Contains("8") AndAlso Not s.Contains("9") Then 
     MsgBox("Password must contain one digit") 
End If 
1

我看到了很多很好的答案,但我只是想擴大你綁什麼一點。 您錯過了一組額外的()。你需要「不」整個if語句。

If Not (s.Contains("1") Or s.Contains("0") Or s.Contains("2") Or _ 
     s.Contains("3") Or s.Contains("4") Or s.Contains("5") Or _ 
     s.Contains("6") Or s.Contains("7") Or s.Contains("8") Or s.Contains("9")) Then 
      MsgBox("Password must contain one digit") 
End If 
相關問題