2014-12-08 115 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 
相关问题